我覺得本篇是很有意思的,閒著沒事來看看!
Python爬蟲教程-28-Selenium 操縱 Chrome
PhantomJS 幽靈瀏覽器,無介面瀏覽器,不渲染頁面。Selenium + PhantomJS 在之前是很完美的搭配。後來在 2017 年 Google 宣佈 Chrome 也宣佈支援不渲染。所以 PhantomJS 使用的人就越來越少了,挺可惜,本篇介紹 Selenium + Chrome
安裝Chrome瀏覽器和 Chromedriver
- 安裝 Chrome 瀏覽器就不介紹了
- 安裝 Chromedriver:
- 注意:Chromedriver 需要根據自己的 Chrome 版本下載:
- Chromedriver 所有版本下載地址:http://npm.taobao.org/mirrors/chromedriver/
- 相容版本請參照:Chrome版本與chromedriver相容版本對照表
- 下載解壓即可,當然如果你解壓到自己定義的目錄,就需要配置一下環境,去環境變數,在 Path 加一條 Chromedriver 的安裝目錄
- 如果你嫌配置環境變數太麻煩,就直接把它放到一個已經配置好環境變數的目錄,比如 C:\Program Files (x86)
安裝 Chromedriver-binary 包
- 【PyCharm】>【file】>【settings】>【Project Interpreter】>【+】 >【BeautifulSoup4】>【install】
- 具體操作截圖:
安裝好就可以盡情使用了
Selenium 操作
- Selenium 操作主要分兩大類:
- 得到 UI 元素
- find_element_by_id
- find_elements_by_name
- find_elements_by_xpath
- find_elements_by_link_text
- find_elements_by_partial_link_text
- find_elements_by_tag_name
- find_elements_by_class_name
- find_elements_by_css_selector
- 基於 UI 元素操作的模擬
- 單擊
- 右鍵
- 拖拽
- 輸入
可以通過 ActionsChains類來做到
案例 29chromedriver
- 得到 UI 元素
- 案例 29chromedriver.py 程式碼檔案:
https://xpwi.github.io/py/py%E7%88%AC%E8%99%AB/py29chromedriver.py
# Selenium + Chrome 案例1
from selenium import webdriver
# 路徑是自己解壓安裝 Chromedriver 的路徑
driver = webdriver.Chrome()
url = "http://www.baidu.com"
driver.get(url)
# 根據id查詢,後面加.text 表示拿看到的文字資料
text = driver.find_element_by_id('wrapper').text
print(text)
執行結果
1.控制檯:列印出來了我們想要的能看到的文字
2.我們可以看到:執行程式自動開啟了一個 Chrome 瀏覽器的視窗,並提示 Chrome 正受到自動檢測軟體的控制
此時,既然已經控制了瀏覽器,我們就可以進行更多操作了
重要案例 29chromedriver2.py
- 案例 29chromedriver2.py 程式碼檔案:
https://xpwi.github.io/py/py%E7%88%AC%E8%99%AB/py29chromedriver2.py
# Selenium + Chrome 案例2
# 開啟的瀏覽器可能會彈窗,點選【取消】或者【不管它】都行
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
# 預設不需要路徑,如果沒有環境變數就需要加上
driver = webdriver.Chrome()
url = "http://www.baidu.com"
driver.get(url)
# 根據id查詢,後面加.text 表示拿看到的文字資料
text = driver.find_element_by_id('wrapper').text
print(driver.title)
# 對頁面截圖,儲存為 baidu.png
driver.save_screenshot('py29baidu.png')
# 控制 Chrome 在輸入框輸入大熊貓
driver.find_element_by_id('kw').send_keys(u"大熊貓")
# 單擊搜尋按鈕,id = 'su'
driver.find_element_by_id('su').click()
# 緩衝5秒,讓頁面載入圖片等
time.sleep(5)
# 截圖,儲存
driver.save_screenshot("py29daxiongmao.png")
# 獲取當前頁面的 cookie 常用在需要登入的頁面
print(driver.get_cookie('cookie'))
# 模擬 按下兩個按鍵 Ctrl + a
driver.find_element_by_id('kw').send_keys(Keys.CONTROL, 'a')
# 模擬 按下兩個按鍵 Ctrl + c
driver.find_element_by_id('kw').send_keys(Keys.CONTROL, 'c')
執行結果
執行程式碼,會自動開啟瀏覽器,自動輸入大熊貓,自動截圖並儲存,然後選中輸入框內容,然後拷貝
是不是很神奇,儲存的截圖和程式碼同級目錄
更多文章連結:Python 爬蟲隨筆
- 本筆記不允許任何個人和組織轉載