嗨大家好!我是阿寶,大概半年前開始碰前後端和Python,同時間相對擅長數位行銷、網站分析、社群經營等。
最近因為被重要的老師啟蒙,而有了把行銷領域重複性的工作,用技術整合成一個簡易應用的想法;
於是經過大概3周的嘗試,KeywordSearch 1.0就誕生了!
初版的她其實很簡單,一個搜尋框一個按鍵,在10秒內告訴你特定關鍵字過去一年的搜尋趨勢以及所有相似關鍵詞組推薦(適合行銷人員做關鍵字規劃使用)。
接下來30天我將把這個小專案開發的過程、碰到的坑等等,一步步紀錄下來,也一方面幫自己做個筆記。
雖然為了讓讀者好理解,內容會盡量詳述;但實際上,對自學最有幫助的還是自己動手查stackoverflow、論壇、看懂官方文件,是不建議一直都仰賴完整中文教學的喔!
開始吧!
整合型的工具,越能解決使用者越大範圍的痛點,則越能提供價值。所以原本的專案絕對不會只停在1.0的版本,而未來要擴充她的功能就跟我們主要介紹的這個套件很有關係:selenium。目前關鍵字詞組推薦的來源也是透過selenium來爬到。
以我對selenium的了解,簡單來說她是用來模擬用戶在瀏覽器的行為,因此最常被用來做軟體測試。不過如果當我們爬蟲的目標網站是動態產生資料的,我們不僅無法從原本的頁面獲取資料,也沒辦法在開發者工具的network panel看到固定的json檔案,這個時候使用selenium就是其中一個解決辦法(註1)。
註1:如果網頁是用ajax來載入json資料,那可能可以在network那邊看到當你觸發資料載入時,呼叫的json檔,通常點開就會直接是純資料(這時候只要用json方法來處理就好,不用解析頁面其實也是個優點)。但我遇過網站是動態產生json檔,每次請求url都不一樣XD,這時候就需要selenium大神了,缺點是速度會慢比較多。也可以用phantomJS、CasperJS,在後面文章我會補充到。
直接用terminal跑一個簡單的爬蟲吧,就決定來把ithome首頁的所有問答標題抓出來好了:
$ sudo pip install selenium
$ python //
Python 3.6.3 |Anaconda, Inc.| (default, Oct 13 2017, 12:02:49)
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
進入python script模式後,一次輸入一行(也可以多行,我在後面的文章會一併提到小技巧)
>>> from selenium import webdriver
>>> from bs4 import BeautifulSoup
>>> ELE = []
>>> browser = webdriver.Chrome()
>>> browser.get('https://ithelp.ithome.com.tw/')
>>> browser.find_element_by_css_selector('.qa-list__title')
>>> soup = BeautifulSoup(browser.page_source, 'html.parser')
>>> for ele in soup.select('.qa-list__title'):
ELE.append(ele.text)
>>> print(ELE)
沒意外的話你就把ithome首頁的問答標題(第一頁)都給抓下來了,這是個簡單的小測試
下一篇我們安裝nodeJS,並同時淺談connect,為下下篇的Express做準備。