Python 爬蟲利器 Selenium
阿新 • • 發佈:2018-12-12
前面幾節,我們學習了用 requests 構造頁面請求來爬取靜態網頁中的資訊以及通過 requests 構造 Ajax 請求直接獲取返回的 JSON 資訊。
還記得前幾節,我們在構造請求時會給請求加上瀏覽器 headers,目的就是為了讓我們的請求模擬瀏覽器的行為,防止被網站的反爬蟲策略限制。今天要介紹的 Selenium 是一款強大的工具,它可以控制我們的瀏覽器,這樣一來程式的行為就和人類完全一樣了。
通過使用 Selenium 可以解決幾個問題:
- 頁面內容是由 JavaScript 動態生成,通過 requests 請求頁面無法獲取內容。
- 爬蟲程式被反爬蟲策略限制
- 讓程式的行為和人一樣
安裝
pip install selenium
安裝瀏覽器驅動
下載後把驅動檔案加入環境變數。或者直接把驅動檔案和 Python指令碼放到同一資料夾下面
測試 安裝完成後,可以編寫以下指令碼來測試是否安裝成功。
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 向輸入框中寫入文字。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() # 點選搜尋
其他操作 Selenium 可以進行各種各樣的操作,使程式完全符合人類的操作習慣。下面看一下還有哪些功能。
具體可以看官方文件,這裡貼一下地址
[https://selenium-python-zh.readthedocs.io/en/latest/index.html](https://selenium-python-zh.readthedocs.io/en/latest/index.html)