Python 爬蟲利器 Selenium

前面幾節,咱們學習了用 requests 構造頁面請求來爬取靜態網頁中的信息以及經過 requests 構造 Ajax 請求直接獲取返回的 JSON 信息。html

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

經過使用 Selenium 能夠解決幾個問題:web

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

    pip install seleniumchrome

  2. 安裝瀏覽器驅動

    驅動下載地址瀏覽器

    下載後把驅動文件加入環境變量。或者直接把驅動文件和 Python腳本放到同一文件夾下面工具

  3. 測試
    安裝完成後,能夠編寫如下腳原本測試是否安裝成功。學習

    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 向輸入框中寫入文本。網站

    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 瀏覽器,並自動搜索 劉亦菲google

  5. 其餘操做
    Selenium 能夠進行各類各樣的操做,使程序徹底符合人類的操做習慣。下面看一下還有哪些功能。

    圖片描述

    具體能夠看官方文檔,這裏貼一下地址
    https://selenium-python-zh.readthedocs.io/en/latest/index.html

相關文章
相關標籤/搜索