1. 程式人生 > >Python 爬蟲利器 Selenium

Python 爬蟲利器 Selenium

前面幾節,我們學習了用 requests 構造頁面請求來爬取靜態網頁中的資訊以及通過 requests 構造 Ajax 請求直接獲取返回的 JSON 資訊。

還記得前幾節,我們在構造請求時會給請求加上瀏覽器 headers,目的就是為了讓我們的請求模擬瀏覽器的行為,防止被網站的反爬蟲策略限制。今天要介紹的 Selenium 是一款強大的工具,它可以控制我們的瀏覽器,這樣一來程式的行為就和人類完全一樣了。

通過使用 Selenium 可以解決幾個問題:

  • 頁面內容是由 JavaScript 動態生成,通過 requests 請求頁面無法獲取內容。
  • 爬蟲程式被反爬蟲策略限制
  • 讓程式的行為和人一樣
  1. 安裝

    pip install selenium

  2. 安裝瀏覽器驅動

    下載後把驅動檔案加入環境變數。或者直接把驅動檔案和 Python指令碼放到同一資料夾下面

  3. 測試 安裝完成後,可以編寫以下指令碼來測試是否安裝成功。 python from selenium import webdriver driver = webdriver.Chrome() # 建立一個 Chrome WebDriver 例項 driver.get('https://www.baidu.com/') # 開啟網址 執行後會發現程式自動打開了 Chrome 瀏覽器,並且定向到了百度首頁。

  4. 與頁面互動 WebDriver定義了很多方法,我們可以很方便的操作頁面上的元素 比如獲取元素,可以通過 driver.find_element_by_id("id")

    或者driver.find_element_by_name("name")以及 xpath路徑的方式來獲取元素。可以通過send_keys 向輸入框中寫入文字。 python from selenium import webdriver driver = webdriver.Chrome() driver.get('https://www.baidu.com/') search_input = driver.find_element_by_id("kw") # 獲取到百度搜索框 search_input.send_keys("劉亦菲") # 自動輸入 劉亦菲 submit = driver.find_element_by_id("su") # 獲取到百度一下按鈕 submit.click() # 點選搜尋
    執行以上指令碼,程式會自動開啟 Chrome 瀏覽器,並自動搜尋 劉亦菲

  5. 其他操作 Selenium 可以進行各種各樣的操作,使程式完全符合人類的操作習慣。下面看一下還有哪些功能。

other.png

具體可以看官方文件,這裡貼一下地址
[https://selenium-python-zh.readthedocs.io/en/latest/index.html](https://selenium-python-zh.readthedocs.io/en/latest/index.html)