如果有在開發Python網頁爬蟲的話,「動態網頁」這個詞應該都不陌生。那想要爬取動態網頁上的資料,Selenium套件就是最常被用來開發網頁爬蟲的工具之一,透過它提供的網頁操作方法,來模擬使用者的操作,進而爬取到動態網頁的資料。
這篇文章我整理了Selenium建置網頁爬蟲專案的步驟與重要模組,幫助大家之後能夠更方便、快速的建立Python動態網頁爬蟲專案。
- 安裝Selenium、Webdriver Manager
- 引用Selenium網頁爬蟲的重要模組
- 初始化Selenium網頁爬蟲專案
一、安裝Selenium、Webdriver Manager
Selenium簡單來說,就是一個自動化的瀏覽器套件,提供了很多操作網頁及爬取資料的方法,也因此它會需要安裝瀏覽器驅動程式,這時候就可以搭配Webdriver Manager套件(支援各種不同瀏覽器的驅動程式),在執行Selenium專案的同時,能夠動態偵測本機使用的瀏覽器版本,自動安裝相應的瀏覽器驅動程式,非常的實用。
可以使用pip指令來安裝這兩個套件:
$ pip install selenium webdriver-manager
二、引用Selenium網頁爬蟲的重要模組
接下來,建立Python網頁爬蟲檔案,引用Selenium套件爬取動態網頁所需的模組,這邊就列出幾個常用Selenium的引用的時機及方式:
- webdriver(瀏覽器驅動模組)
from selenium import webdriver # 瀏覽器驅動模組
- webdriver_manager(瀏覽器驅動管理員)
from webdriver_manager.chrome import ChromeDriverManager # Chrome瀏覽器驅動模組
- By(網頁元素定位模組)
from selenium.webdriver.common.by import By # 定位元素模組
- ActionChains(動作鏈模組)
from selenium.webdriver.common.action_chains import ActionChains
- WebDriverWait(網頁驅動等待模組)、expected_conditions(期望條件模組)
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC
- time(時間模組)
import time # 時間模組
- Options(瀏覽器選項模組)
from selenium.webdriver.chrome.options import Options # 瀏覽器選項設定模組
三、初始化Selenium網頁爬蟲專案
依照爬取的情境引用適合的模組之後,就可以建立Selenium的webdriver瀏覽器驅動物件,這邊以Chrome瀏覽器為例:
# 安裝及啟動Chrome瀏覽器 driver = webdriver.Chrome(ChromeDriverManager().install(), chrome_options=options)
接下來,利用webdriver瀏覽器驅動物件的get()方法,發送請求到想要爬取的目標網頁網址,如下範例:
# 安裝及啟動Chrome瀏覽器 driver = webdriver.Chrome(ChromeDriverManager().install(), chrome_options=options) # 發送請求到Facebook網站 driver.get('https://www.facebook.com/')
到這邊就完成Selenium網頁爬蟲專案的初始化了,後續就可以透過webdriver瀏覽器驅動物件來爬取動態網頁上的資料了。
四、小結
這篇文章分享了建置Selenium網頁爬蟲專案的系統化步驟,首先安裝Selenium、Webdriver Mananger套件,再來依爬取需求引用相應的模組,最後建立瀏覽器驅動模組來完成專案的初始化,下次想要建立Selenium網頁爬蟲專案的時候,就參考這篇文章的教學,不用再東找西找還有什麼模組沒有引用了!歡迎分享給學習Python網頁爬蟲的朋友們。
你可能有興趣的文章
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYqMPD_mPLEileg1IdrsIYhFSWZkYFKYmEnUqWqiqdiJv2XYnkT23CFcXoTN6HBtGCEUylgVoUIVKm6KPRPM_TjcjsSei4lGE_YmZdrWA6Ulw1fp6-o8Cn-bVwr7_FANFoC4tjTe-ak6w-atFYq-a1pipQbZvQzt4wHRNK7tywcSG0dSCnpJpqoMP5wA/s1600/Python%E7%B6%B2%E9%A0%81%E7%88%AC%E8%9F%B2%E5%85%8D%E8%B2%BB%E7%B7%9A%E4%B8%8A%E5%9F%B9%E8%A8%93.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-fK9Da5M7X1lSpbZVan4Eo-PunVnQv-YHw3EDahTUhZr5FayVLaCPqrW44W3_xwQQO-gAWZEwe_A-SxL_nltT__ArbFOgLYAAIsi3RzETT9GqVsfyfN9PXDs-xGTkxZSqj_W1SCxwD2UcrJLqHZSYIrLB-HIU75vSom4YoqoWFUQz_o4PbnvTQUbE6Bab/w640-h426/2.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg61JC7N1hyphenhyphenPpzb1hNJauunevoWrOsJxk_Upz0ywnLtIAJ2rdd1ZxChyphenhyphenFPq8GHYfywtHv2mTce5NGdwwxWFWYARhA6In0xlOzkwlRb9kM04mwgdy9Un9JgVCoLQnwV25oUcitQy2OY4TeA3gVIs067wR4StGfkldbykOeL3TfPchWfNClWKhL10ZzWaxFtf/w640-h426/3.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgh1XFQE0AmkZHSFB0Icq3uY4_FdsIYZ9nUqllOlo9ulRu0ri-LS1OeW2ybKOO2QRg-gyUOUr_3sMLYf7S4Q5ULZpIcXsS1pAkSMPm0OwqpbnLET51WEpQ3EoY5WaEVEWyTixBkRqp2tA7SpePM_MCIY6tnyUvu917rulqbLJTEEPsEho6Q-4Tf74DFdakd/w640-h426/4.png)
留言
張貼留言