前面幾節,咱們學習了用 requests 構造頁面請求來爬取靜態網頁中的信息以及經過 requests 構造 Ajax 請求直接獲取返回的 JSON 信息。python
能夠點擊連接查看:web
Python爬蟲——Python崗位分析報告chrome
還記得前幾節,咱們在構造請求時會給請求加上瀏覽器 headers,目的就是爲了讓咱們的請求模擬瀏覽器的行爲,防止被網站的反爬蟲策略限制。今天要介紹的 Selenium 是一款強大的工具,它能夠控制咱們的瀏覽器,這樣一來程序的行爲就和人類徹底同樣了。工具
經過使用 Selenium 能夠解決幾個問題:學習
頁面內容是由 JavaScript 動態生成,經過 requests 請求頁面沒法獲取內容。測試
爬蟲程序被反爬蟲策略限制網站
讓程序的行爲和人同樣google
安裝
pip install selenium
安裝瀏覽器驅動
驅動下載地址https://sites.google.com/a/chromium.org/chromedriver/downloads
下載後把驅動文件加入環境變量。或者直接把驅動文件和 Python腳本放到同一文件夾下面
測試
安裝完成後,能夠編寫如下腳原本測試是否安裝成功。
from selenium import webdriver
driver = webdriver.Chrome() # 建立一個 Chrome WebDriver 實例
driver.get('https://www.baidu.com/') # 打開網址
運行後會發現程序自動打開了 Chrome 瀏覽器,而且定向到了百度首頁。
與頁面交互
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 瀏覽器,並自動搜索 劉亦菲
其餘操做
Selenium 能夠進行各類各樣的操做,使程序徹底符合人類的操做習慣。下面看一下還有哪些功能。
具體能夠看官方文檔,這裏貼一下地址
https://selenium-python-zh.readthedocs.io/en/latest/index.html