Photo by Tim Bennett on Unsplash LINE Bot 機器人在日常生活中,相信都可以看到它的身影,像是線上購物平台的優惠活動或最新消息推播等,藉此來和使用者進行互動。所以筆者也開發了一個美食餐廳機器人 (FoodLineBot) ,來幫助使用者找到理想的餐廳。 本文延續 [Python+LINE Bot教學]6步驟快速上手LINE Bot機器人 文章,在瞭解 LINE Bot 的執行架構,建置了一個基本的答話功能後,接下來就要來教各位如何整合 Python 網頁爬蟲,將取得的訊息,透過 LINE Bot 自動回覆給使用者。 本文的重點包含: LINE Bot 專案架構 Python 網頁爬蟲 LINE Bot 整合 Python 網頁爬蟲 一、 LINE Bot 專案架構 首先,來複習一下 [Python+LINE Bot教學]6步驟快速上手LINE Bot機器人 文章中的專案架構,如下圖: 而加入 Python 網頁爬蟲後,它的架構就會是如下圖: 也就是在 Django 專案中,新增一個 Python 檔案,在其中撰寫網頁爬蟲的程式碼,最後將取得的資料透過文字訊息回應給使用者。 為了簡化教學內容,讓讀者易於學習,所以本文只會爬取一個美食網站的資訊作為範例,當讀者熟悉後,即可依照需求爬取更多的網站。 二、 Python 網頁爬蟲 本文將以知名美食網站 愛食記 為例,爬取其中的餐廳資訊,首頁如下圖: 在網站中,包含許多非常棒的美食專欄文章及評價,並且提供了餐廳篩選的條件,如下圖: 本文就先來示範爬取某地區 前五名最高人氣且營業中的餐廳資訊 ,而在下一篇文章中,則會 增加 讓使用者選擇美食分類及平均消費價格的需求,也就是上圖的美食分類及平均消費的篩選條件,將符合的餐廳資訊回覆給使用者。 接下來,利用以下的指令安裝 Requests 及 BeautifulSoup 套件 ,分別用來請求存取與解析網頁的 HTML 原始碼 : $ pip install requests $ pip install beautifulsoup4 開啟 Django 專案,在應用程式 (foodlinebot) 下,新增一個 scraper.py 檔案,如下圖: 在 scraper.py 檔案中,會使用 Python 物件導向的多型 (Polymorphism)