selenium+chrome無界面瀏覽器實現爬蟲

selenium介紹
Selenium是python的第三方庫,對外提供的接口可操作瀏覽器,然後讓瀏覽器完成自動化的操作
selenium 是一套完整的web應用程序測試系統,包含了測試的錄製(selenium IDE),編寫及運行(Selenium Remote Control)和測試的並行處理(Selenium Grid)。Selenium的核心Selenium Core基於JsUnit,完全由JavaScript編寫,因此可以用於任何支持JavaScript的瀏覽器上
selenium可以模擬真實瀏覽器,自動化測試工具,支持多種瀏覽器,爬蟲中主要用來解決JavaScript渲染問題
Selenium庫下webdriver模塊可以直接操作瀏覽器
學習鏈接:https://www.cnblogs.com/zhaof/p/6953241.html

Selenium安裝:
pip install selenium

Selenium使用 :
準備工作:
(下載瀏覽器對應版本的驅動)——谷歌爲例
1.查看瀏覽器版本:
右側——幫助——關於googlechrome
2.查看谷歌驅動及版本信息
https://blog.csdn.net/huilan_same/article/details/51896672
3.下載谷歌驅動
http://chromedriver.storage.googleapis.com/index.html

selenium使用步驟
1.導入模塊webdriver
from selenium import webdriver
2.創建瀏覽器對象
browser = webdriver.Chrome(下載的驅動位置)
selenium支持的瀏覽器查看方法:help(webdriver)
3.使用get()方法打開網頁
browser.get(url)

selenium定位元素
在這裏插入圖片描述
selenium的操作
1.常用方法:
send_keys( ):在input中輸入內容
click( ):對可點擊對象進行單擊操作
submit( ):表單數據提交
save_screenshot():將網頁以圖片形式保存
常用屬性:
page_source:獲取網頁內容
title:獲取網頁標題
text:獲取元素文本值
學習鏈接:https://www.cnblogs.com/hanxiaobei/p/7224681.html

2.對瀏覽器的操作
1)瀏覽器最大化
browser.maximize_window()
2)設置瀏覽器寬和高
browser.set_window_size(400,800)
3)控制瀏覽器前進、後退
browser.forward()
browser.back()

3.對鼠標的操作
ActionChains類操作鼠標事件
操作格式:
ActionChains(driver).context_click(操作對象).perform()
使用方法:
1)導入ActionChains類
from selenium.webdriver.common.action_chains import ActionChains
2)定義ActionChains對象
action = ActionChains(browser)
3)調用ActionChains操作方法
action.操作對象
4)執行 :perform()
鼠標操作方法:
鼠標點擊:
context_click():鼠標右擊
double_click():鼠標雙擊
click():鼠標點擊
click_and_hold():按住鼠標左鍵
鼠標移動:
move_to_element(目標元素) :移動到某個元素move_by_offset(xoffset,yoffset) :移動到某個座標
鼠標拖曳:
drag_and_drop(source,target):將元素從起點source移動到終點target
drag_and_drop_by_offset(source,xoffset,yoffset):按照座標移動

4.其它操作方法
------獲得頁面URL和title
1)獲得當前頁面title,判斷頁面跳轉是否符合預期
title = browser.title
2)獲得當前URL,一般用來測試重定向
url = browser.current_url

------設置等待時間
sleep():設置固定休眠時間。Python的time包提供sleep方法implicitly_wait():webdriver提供的一個隱性等待的時間,在一個時間段內只能的等待,超時則拋出異常
WebDriverWait(browser, timeout, poll_frequency=0.5, ignored_exceptions=None):webdriver提供的另一個方法,在設置時間內,默認每隔一段時間去檢測頁面元素是否存在,如果超出設置時間檢測不到則拋出異常
driver - WebDriver 的驅動程序
timeout - 最長超時時間,默認以秒爲單位
poll_frequency - 休眠時間的間隔(步長)時間,默認爲0.5 秒ignored_exceptions - 超時後的異常信息,默認情況下拋NoSuchElementException 異常

------截圖操作
get_screenshot_as_file():獲取當前頁面的截圖保存到指定的位置
save_screenshot():將網頁保存成圖片
page_source:獲取網頁內容

selenium對frame與window的操作
1.selenium對frame的操作
webDriver只能在一個頁面上對元素識別和定位,對於frame/iframe表單內嵌頁面上的元素無法直接定位,此時就需要通過switch_to.frame()方法將當前定位的主題切換爲iframe表單的內嵌頁面中
常用方法與屬性:
switch_to.frame(id/name/xpath) 默認可以直接取表單的id 或name屬性
如果此時在進入多級表單的情況下,還可以通過switch_to.default_content()跳回最外層的頁面
2.selenium對window的操作
在頁面操作過程中有時候點擊某個鏈接會彈出新的窗口,這時就需要主機切換到新打開的窗口上進行操作。WebDriver提供了switch_to.window()方法,可以實現在不同的窗口之間切換
常用方法與屬性:
current_window_handle:獲得當前窗口標誌(句柄)
window_handles:返回所有窗口的句柄到當前會話
switch_to.window():用於切換到相應的窗口
close():關閉當前窗口
quit():關閉所有窗口
3.selenium對alter的操作
在WebDriver中處理JavaScript所生成的alert、confirm以及prompt十分簡單,具體做法是使用 switch_to.alert 方法定位到 alert/confirm/prompt,然後使用text/accept/dismiss/ send_keys等方法進行操作
常用方法與屬性:
text:返回 alert/confirm/prompt 中的文字信息
accept():接受現有警告框
dismiss():解散現有警告框
send_keys(keysToSend):發送文本至警告框
keysToSend:將文本發送至警告框

selenium+chrome無界面爬蟲
學習鏈接:
https://blog.csdn.net/xc_zhou/article/details/82415870
Options類簡介:
chromeoptions一個配置chrome啓動時屬性的類,通過這個類可配置:
1、設置 chrome 二進制文件位置 (binary_location)
2、添加啓動參數 (add_argument)
3、添加擴展應用
(add_extension, add_encoded_extension)
4、添加實驗性質的設置參數
(add_experimental_option)
5、設置調試器地址 (debugger_address)

options對象的常用功能:
1、設置編碼格式
options.add_argument(‘lang=zh_CN.UTF-8’)
2、設置瀏覽器用戶代理:
# 比如模擬 android QQ瀏覽器
options.add_argument(‘user-agent=“MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1”’)
3、設置瀏覽器爲無界面模式:
options.add_argument(‘-headless’)

使用方法 :
1、導入模塊及類
from selenium.webdriver.chrome.options import Options
2.定義Options對象
options = Options()
3.將chrome設置爲無界面模式
options.add_argument(‘-headless’)
4.在創建瀏覽器對象時將該對象作爲options參數值傳遞
browser = webdriver.Chrome(驅動,chrome_options=options)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章