Python爬蟲教程-28-Selenium 操縱 Chrome
阿新 • • 發佈:2018-09-07
渲染 oba 介紹 兼容 拷貝 輸入框 keys 拖拽 chrome
- 本筆記不允許任何個人和組織轉載
我覺得本篇是很有意思的,閑著沒事來看看!
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爬蟲教程-28-Selenium 操縱 Chrome