動態網頁爬蟲第一道鎖 — Selenium教學:如何使用Webdriver、send_keys(附Python 程式碼)

行銷資料科學
13 min readOct 7, 2020

--

大家好,歡迎來到爬蟲的世界!為了因應大家的動態網頁的出現,本系列文章將和大家分享,如何善用Selenium爬蟲工具 ,讓爬蟲技巧更聰明~~

初學爬蟲的人,大多從靜態網頁開始入門。但對於時下最常用的FB及IG的大量資訊,是否也非常想要小試身手!?

動態網頁爬蟲不知道怎麼爬嗎?本系列文章,將帶大家從動態網頁的必備最佳助手Selenium入門。Selenium它就是模擬一般消費者瀏覽的網頁的所有習性,也因此爬蟲速度會較慢、同時也仰賴網速及消耗大量cpu!但!它絕對是資料科學領域不可不學的爬蟲工具!

本篇文章會依序介紹以下7大步驟,讓大家可以依此打開動態網頁爬蟲第一道鎖:

  1. Selenium 介紹
  2. Selenium 安裝
  3. Webdriver 下載
  4. Chromedriver 使用
  5. 使用Selenium輸入及點擊
  6. send_keys模擬鍵盤輸入
  7. 瀏覽紀錄

1. Selenium 介紹

Selenium提供了一個簡單的API應用程式介面(英語:Application Programming Interface),使用者可以利用Selenium Webdriver 編寫功能及測試。

2. Selenium 安裝

在python裡執行以下程式碼,即可安裝Selenium套件。

pip install selenium

3. Webdriver 下載

要使用Selenium爬蟲前,Webdriver是必備的,而不同的瀏覽器會有不同的driver。以下提供四種常見的瀏覽器driver供大家參考及下載。

  1. Chrome
  2. Edge
  3. Firefox
  4. Safari

選定了瀏覽器,在下載前,請記得檢查目前的瀏覽器版本,再下載對應的Webdriver,之後也要適時更新版本以維護程式碼運行喔!

以下針對大家較常使用的Chromedriver做介紹~

4. Chromedriver 使用

# 載入需要的套件from selenium import webdriver# 開啟瀏覽器視窗(Chrome)# 方法一:執行前需開啟chromedriver.exe且與執行檔在同一個工作目錄driver = webdriver.Chrome()# 方法二:或是直接指定exe檔案路徑driver = webdriver.Chrome(“桌面\chromedriver”)

雖這裡只提供了Chromedriver的程式碼範例給大家,但是不用擔心~

若是想要運用以上其他的瀏覽器,那只要在瀏覽器的名稱上作更改,其他的方法幾乎一樣,如下程式碼。有興趣的同好,可以多試幾個不同的瀏覽器方法。

driver = webdriver.Firefox()driver = webdriver.Safari()

開啟網頁後,使用get()輸入網址,即可前往特定網頁。close()則可關閉目前網頁視窗。

driver.get("http://www.google.com") # 更改網址以前往不同網頁driver.close() # 關閉瀏覽器視窗

5. 使用Selenium輸入及點擊

可以使用在網頁需要輸入某個字串才能執行下一步驟時,例如:輸入帳號密碼、搜尋特定關鍵字等等。

以google首頁為例,假設:

我們需要搜索關鍵字「Selenium Python」,那就必須先找到搜尋框的網頁元素(Web element),如圖一。

圖一、找到需要的網頁元素

程式碼如下:

# 定位搜尋框element = driver.find_element_by_class_name(“gLFyf.gsfi”)# 傳入字串element.send_keys(“Selenium Python”)

回到受Webdriver控制的網頁,神奇的事情發生了!搜尋框裡有文字了,如圖二所示。

圖二、send_keys之後的網頁

如果想要刪掉原先已經輸入的文字,可以使用clear()清除網頁元素原先的字串或搜索詞。

element.clear()

那填入關鍵字之後,要怎麼點擊搜尋按鈕呢?

找到按鈕的網頁元素後,使用click()點擊就可以啦!

button = driver.find_element_by_class_name(“gNO89b”)button.click()

執行以上程式碼之後網頁就會點擊搜尋按鈕並前往搜尋頁面(注意:搜尋框裡要有東西)。

圖三、使用Selenium點擊搜尋按鈕的結果

看!是不是很厲害呢!大家可以自行更改搜尋關鍵字,或是嘗試不同網頁練習看看喔!

6. send_keys模擬鍵盤輸入

send_keys除了輸入文字內容以外,也可以執行keyboard上的所有動作喔!

先載入需要的套件:

from selenium.webdriver.common.keys import Keys

以下是keys類別裡所有鍵的內容,若非功能鍵,例如:a、b、c等等,直接使用就可以了!

左邊是主要的變數名稱,右邊則是按鍵對應到的Keys代碼,如下程式碼。

"""Set of special keys codes."""NULL = '\ue000'CANCEL = '\ue001' # ^breakHELP = '\ue002'BACKSPACE = '\ue003'BACK_SPACE = BACKSPACETAB = '\ue004'CLEAR = '\ue005'RETURN = '\ue006'ENTER = '\ue007'SHIFT = '\ue008'LEFT_SHIFT = SHIFTCONTROL = ‘\ue009’LEFT_CONTROL = CONTROLALT = ‘\ue00a’LEFT_ALT = ALTPAUSE = ‘\ue00b’ESCAPE = ‘\ue00c’SPACE = ‘\ue00d’PAGE_UP = ‘\ue00e’PAGE_DOWN = ‘\ue00f’END = ‘\ue010’HOME = ‘\ue011’LEFT = ‘\ue012’ARROW_LEFT = LEFTUP = ‘\ue013’ARROW_UP = UPRIGHT = ‘\ue014’ARROW_RIGHT = RIGHTDOWN = ‘\ue015’ARROW_DOWN = DOWNINSERT = ‘\ue016’DELETE = ‘\ue017’SEMICOLON = ‘\ue018’EQUALS = ‘\ue019’NUMPAD0 = ‘\ue01a’ # number pad keysNUMPAD1 = ‘\ue01b’NUMPAD2 = ‘\ue01c’NUMPAD3 = ‘\ue01d’NUMPAD4 = ‘\ue01e’NUMPAD5 = ‘\ue01f’NUMPAD6 = ‘\ue020’NUMPAD7 = ‘\ue021’NUMPAD8 = ‘\ue022’NUMPAD9 = ‘\ue023’MULTIPLY = ‘\ue024’ADD = ‘\ue025’SEPARATOR = ‘\ue026’SUBTRACT = ‘\ue027’DECIMAL = ‘\ue028’DIVIDE = ‘\ue029’F1 = ‘\ue031’ # function keysF2 = ‘\ue032’F3 = ‘\ue033’F4 = ‘\ue034’F5 = ‘\ue035’F6 = ‘\ue036’F7 = ‘\ue037’F8 = ‘\ue038’F9 = ‘\ue039’F10 = ‘\ue03a’F11 = ‘\ue03b’F12 = ‘\ue03c’META = ‘\ue03d’COMMAND = ‘\ue03d’

若是您想要使用經常用到的「複製」-「ctrl+c」、「貼上」-「ctrl+v」功能,那要怎麼做呢?

如下述程式碼所示,對想要進行複製貼上的網頁元素使用send_keys,並在同樣的send_keys內包含一起使用的功能鍵就可以了。

element.send_keys(Keys.CONTROL, "c")element.send_keys(Keys.CONTROL, "v")

7. 瀏覽紀錄

至於網頁前後的瀏覽紀錄,那也非常的簡單,如下程式碼所示:

前往下一項瀏覽紀錄

driver.forward()

前往上一項瀏覽紀錄

driver.back()

以上7大步驟,已經帶您打開進入Selenium網頁爬蟲的大門了!之後的文章,我們會繼續和大家分享selenium在不同動態網頁的應用。

作者:戴若竹(臺灣行銷研究特邀作者)、鍾皓軒(臺灣行銷研究有限公司創辦人)

歡迎加入我們的Telegram獲取即時訊息!https://t.me/marketingdatascience
歡迎加入我們的Line@獲取即時訊息!https://line.me/R/ti/p/%40cde8265r

您可能有興趣:

📢TMR為您量身打造「全方位數據課程」

👨‍🎓熱門Python程式語言結合全新商業思維,快來終生學習不間斷!

【TMR】 X 【 好學校】
👨‍💼Python商業全系列數位課程👨‍💼

#行銷人必學實用Python課程

《 Python 0到1 基礎商業數據分析實戰 》
💥 價格 :3188
👉 從0開始:手把手從頭學習,適合完全沒學過的學員
👉 商業應用全台最多:傳授市面上少見的Python實務應用
👉 網路輿情爬蟲演練:網路輿情商務爬蟲技法
👉 競品分析:競爭價值定位圖找出藍海策略
👉 貨架陳列視覺化:解析行銷策略及廣告預算配置方法
🛒 前往購買:https://hahow.in/cr/python0-1

《 顧客分類大師:Python x RFM 會員經營新觀點 》
💥 價格 :2388

🎯 Python X RFM最佳拍檔,輕鬆鎖定潛(錢)在顧客
不需要出門,在家也能學習專業課程,讓你擁有會員經營的新思維!

本課程以五個面向為您的企業,做更深入的健診:
👉 市場面:以最基本的顧客消費資料(頻率、購買次數),將現有顧客區隔分類。
👉 財務面:計算出在每個顧客身上所賺得毛利,在不同客群中的獲利。
👉 行銷面:藉由 RFM 的分析進行行銷預算重新分配。
👉 產品面:觀察在不同客群中,各個產品的銷售狀況。
👉 顧客回購面:分析顧客的購買週期後,進行精準推薦。
🛒 前往購買:https://hahow.in/cr/rfm-model

《 AI 行銷學:用 Python 機器學習創造商業新價值 》
💥 價格 :3888
👉 全台第一門Python機器學習線上課程
👉 教導你快速理解Logistic Regression, XGBoost, Random Forest商務機器學習模型。
👉 建構老闆或主管們看得懂的模型評估指標,讓精準行銷方案更容易被接受且推出
👉 如何利用機器學習找出消費者心中的重要變數及客樣貌與特徵,做到個體及總體的商品推薦?
👉 如何從數以萬計的消費資料中偵測可能的詐欺名單?
🛒 前往購買:https://hahow.in/cr/python-ml

#實用投資分析課程

《 用 Python 打造自己的股票小秘書 》
💥 價格 :4288
👉 打造自動推播機器人,趁著股市最近低迷,找出最適進場點
👉 「到價提醒」功能,大大提升投資便利性
👉 了解Python雲端服務架構,完整的專案流程
👉 孰悉No SQL資料庫操作,未來大數據的基礎
🛒 前往購買:https://hahow.in/cr/stock-secretary

#好學校企業百大課程之一:

台科 EMBA 年年爆滿的一門 Word 課(A系列)
💥 價格 :950
👉 系統性學習Office軟體功能,教您別人不知道的快捷鍵
👉 調整不受控制的行距與精準對齊排版
👉 一鍵轉換Word到Excel
👉 有效率處理企畫書、畢業論文、小組報告、公文等
🛒 前往購買:https://hahow.in/cr/tmr-word1

台科 EMBA 年年爆滿的一門 Word 課(B+C系列)
💥 價格 :1,050
👉 傳授獨家快捷鍵字典
👉 分享好用的大綱模式,讓文章處理更有效率
👉 建立大綱模式、多層次清單、目錄與圖表目錄,掌握文件編輯規則
👉 優化文章的邏輯架構
🛒 前往購買:https://hahow.in/cr/tmr-word2

— — — — — — — — — — — — — — — — -

【TMR】 X 【工研院】
🏭工業4.0大數據智慧應用課程🏭

《Python工業4.0人工智慧:製程資料處理大師》

製程數據資料 X 資料科學,
為您開啟工業人工智慧領域的大門!
👉全球前十大智慧製程案例實戰
👉專業講師手把手帶您入門製程資料處理分析
👉課後完整模組心法讓您通通帶回家

💥價格 : 2,800
🏃趕緊手刀前往購買:https://bit.ly/39koNbn

— — — — — — — — — — — — — — — — -

2020課程地圖

💪 點我看更多

🏆 國內第一本行銷資料科學專書

💪 點我看書本資訊

🏆 國內第一本行銷資料科學 ” 實作 ” 專書

💪 點我看書本資訊

🏆國內第一本「股票小祕書」專書

附上購書網址~ 國外的朋友也可以使用博客來與金石堂的通路轉運到國外哦!

  1. 天瓏書局:http://bit.ly/stock-secretaryBot
  2. 博客來:https://www.books.com.tw/products/0010833772

--

--

行銷資料科學
行銷資料科學

Written by 行銷資料科學

Marketing data science. 台灣第一個行銷資料科學(MDS)知識部落,本粉絲專頁在探討行銷資料科學之基礎概念、趨勢、新工具和實作,讓粉絲們瞭解資料科學的行銷運用,並開啟厚植數據分析能力之契機。粉絲專頁:https://www.facebook.com/MarketingDataScienceTMR

No responses yet