摘要:使用在中進(jìn)行了一項(xiàng)使用瀏覽器的工作在此記錄下遇到的問題以及解決方法入門參考中如何安裝瀏覽器以及參考啟動(dòng)瀏覽器時(shí)常用的屬性指定瀏覽器分辨率谷歌文檔提到需要加上這個(gè)屬性來規(guī)避隱藏滾動(dòng)條應(yīng)對(duì)一些特殊頁面不加載圖片提升速度
使用python3.6在Ubuntu中進(jìn)行了一項(xiàng)使用Chrome headless瀏覽器的工作, 在此記錄下遇到的問題以及解決方法.入門?
參考 unning-selenium-with-headless-chrome
Ubuntu中如何安裝chrome瀏覽器, 以及chromedriver?參考 Installing ChromeDriver on Ubuntu
selenium啟動(dòng)瀏覽器時(shí)常用的屬性from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_argument("window-size=1920x3000") #指定瀏覽器分辨率 chrome_options.add_argument("--disable-gpu") #谷歌文檔提到需要加上這個(gè)屬性來規(guī)避bug chrome_options.add_argument("--hide-scrollbars") #隱藏滾動(dòng)條, 應(yīng)對(duì)一些特殊頁面 chrome_options.add_argument("blink-settings=imagesEnabled=false") #不加載圖片, 提升速度 chrome_options.add_argument("--headless") #瀏覽器不提供可視化頁面. linux下如果系統(tǒng)不支持可視化不加這條會(huì)啟動(dòng)失敗 chrome_options.binary_location = r"/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary" #手動(dòng)指定使用的瀏覽器位置selenium如何連接到已經(jīng)開啟的瀏覽器?
需要在打開瀏覽器后, 獲取瀏覽器的command_executor url, 以及session_id
opener.command_executor._url, opener.session_id #opener為webdriver對(duì)象
之后通過remote方式鏈接
from selenium import webdriver opener = webdriver.Remote(command_executor=_url,desired_capabilities={}) #_url為上面的_url opener.close() #這時(shí)會(huì)打開一個(gè)全新的瀏覽器對(duì)象, 先把新的關(guān)掉 opener.session_id = session_id #session_id為上面的session_id
之后對(duì)opener的任何操作都會(huì)反映在之前的瀏覽器上.
selenium 的 desired_capabilities 如何傳遞--headless這樣的瀏覽器參數(shù)from selenium.webdriver.common.desired_capabilities import DesiredCapabilities capabilities = DesiredCapabilities.CHROME capabilities.setdefault("chromeOptions", {"args":["--headless", "--disable-gpu"]})selenium 使用 crontab等環(huán)境啟動(dòng)時(shí)提示chromedriver not in PATH
初始化的時(shí)候, 傳入chromedriver絕對(duì)路徑
opener = webdriver.Chrome(r"/usr/local/bin/chromedriver", chrome_options=chrome_options)selenium使用cookies
獲得cookies
opener.get_cookies()
寫入cookies
opener.add_cookie(cookie) #需要先訪問該網(wǎng)站產(chǎn)生cookies后再進(jìn)行覆寫
opener.implicitly_wait(30) #30是最長(zhǎng)等待時(shí)間
selenium 打開新標(biāo)簽頁偏向使用js函數(shù)來執(zhí)行
opener.execute_script("""window.open("http://baidu.com","_blank");""")selenium 獲得頁面的網(wǎng)絡(luò)請(qǐng)求信息
有些時(shí)候頁面在你點(diǎn)擊后會(huì)異步進(jìn)行請(qǐng)求, 完成一些操作, 這時(shí)可能就會(huì)生成輸出數(shù)據(jù)的url, 只要抓到這個(gè)url就可以跳過token驗(yàn)證等安全監(jiān)測(cè), 直接獲得數(shù)據(jù).
script = "var performance = window.performance || window.mozPerformance || window.msPerformance || window.webkitPerformance || {}; var network = performance.getEntries() || {}; return network;" performances = opener.execute_script(script)
script里是js代碼, 一般用來進(jìn)行性能檢查, 網(wǎng)絡(luò)請(qǐng)求狀況, 使用selenium執(zhí)行這段js就可以獲得所有的請(qǐng)求信息.
おわり.
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/41342.html
摘要:而在不久前宣布支持模式而后跟隨的新聞再次勾起我無盡的回憶。那么我們就來談?wù)勗诤蜑g覽器不原生支持模式下如何使用來實(shí)現(xiàn)模式進(jìn)行動(dòng)態(tài)數(shù)據(jù)的抓取。比較常見的例子在中進(jìn)行轉(zhuǎn)發(fā)。下面我們進(jìn)行測(cè)試發(fā)現(xiàn)其可以正常的運(yùn)行。 原文地址: http://52sox.com/python-use-h... 在Python中進(jìn)行瀏覽器測(cè)試時(shí),一般我們會(huì)選擇selenium這樣的庫來簡(jiǎn)化我們工作量。而有些時(shí)候,為...
摘要:了解模式指的是不需要用戶界面的瀏覽器,這種瀏覽器在自動(dòng)化測(cè)試和爬蟲領(lǐng)域有著廣泛的應(yīng)用。實(shí)踐使用瀏覽器的模式進(jìn)行自動(dòng)化測(cè)試,你需要先滿足以下前提運(yùn)行環(huán)境或者或者最新版已加入萬事俱備,廢話不多說我們直接上演示代碼。 了解HEADLESS模式 HEADLESS BROWSER 指的是不需要用戶界面的瀏覽器,這種瀏覽器在自動(dòng)化測(cè)試和爬蟲領(lǐng)域有著廣泛的應(yīng)用。 例如你想在網(wǎng)頁上運(yùn)行一些測(cè)試,從網(wǎng)頁...
摘要:通常的解決辦法是通過抓包,然后查看信息,接著捕獲返回的消息。為了減少因?yàn)榘惭b環(huán)境所帶來的煩惱。代理因?yàn)槲覀円呀?jīng)用替換了。我們需要直接用來處理代理問題。根據(jù)上面這段代碼,我們也不難猜出解決代理的方法了。 上周說到scrapy的基本入門。這周來寫寫其中遇到的代理和js渲染的坑。 js渲染 js是爬蟲中畢竟麻煩處理的一塊。通常的解決辦法是通過抓包,然后查看request信息,接著捕獲ajax...
注:文章聚合了現(xiàn)在 headless chrome 介紹和使用方式 包含了三個(gè)部分 chrome 在 mac 上的安裝和簡(jiǎn)單使用(來自官方) 利用 selenium 的 webdrive 驅(qū)動(dòng) headless chrome(自己添加) 利用Xvfb方式實(shí)現(xiàn)偽 headless chrome 概念 Headless模式解決了什么問題: 自動(dòng)化工具例如 selenium 利用有頭瀏覽器進(jìn)行測(cè)試...
摘要:對(duì)應(yīng)的的放置目錄打開開始登錄輸入框你的賬號(hào)你的密碼登錄確認(rèn)睡眠秒截圖驗(yàn)證碼寫上你自己的圖片地址請(qǐng)輸入看到的驗(yàn)證碼截圖查看步驟寫上你自己的圖片地址輸入任意值繼續(xù)登錄之后跳轉(zhuǎn)跳轉(zhuǎn)開始動(dòng)態(tài)令牌請(qǐng)輸入動(dòng)態(tài) # -*- coding: utf-8 -*- import sys reload(sys) sys.setdefaultencoding(utf-8) import os from ...
閱讀 1305·2021-10-08 10:04
閱讀 1936·2021-09-04 16:40
閱讀 2547·2019-08-30 13:21
閱讀 2291·2019-08-29 15:10
閱讀 2859·2019-08-29 12:35
閱讀 1199·2019-08-26 17:41
閱讀 3070·2019-08-26 17:03
閱讀 1150·2019-08-26 12:01