當(dāng)使用Selenium爬取一些頁面時,有些頁面加載速度特別慢,而我們又不需要等待頁面完全加載完畢。
此時可以通過driver.set_page_load_timeout()
來設(shè)置頁面超時時間。
捕獲異常,并執(zhí)行js腳本window.stop()
即可實現(xiàn),代碼如下。
from selenium import webdriver
driver = webdriver.Chrome()
driver.set_page_load_timeout(3)
try:
driver.get('https://hk.louisvuitton.com/zht-hk/homepage')
print('finish load ....')
except Exception:
driver.execute_script('window.stop()')
print(driver.title)
finally:
driver.quit()
報錯處理:
如果遇到如下,超時錯誤,可以嘗試更新chromedriver驅(qū)動。
?Selenium分離式啟動Webdriver服務(wù)和瀏覽器
Selenium在啟動瀏覽器時實際進(jìn)行里兩步操作,
- 通過子進(jìn)程,使用chromedriver啟動一套Webdriver服務(wù)
- 使用webdriver.Remote()方法連接該服務(wù)并發(fā)送指令啟動瀏覽器。
在某些情況下如果,你需要分離式啟動服務(wù)和連接服務(wù)的過程,可以使用以下步驟,參考代碼如下:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service # 導(dǎo)入chrome的服務(wù)啟動方法
# 1. 啟動服務(wù)
service = Service('/usr/local/bin/chromedriver') # 傳入chromedriver路徑,實例化一個服務(wù)應(yīng)用
service.start() # 啟動服務(wù)
# 2. 連接服務(wù)
driver = webdriver.Remote(service.service_url) # 連接服務(wù)
driver.get('https://www.baidu.com/')
driver.quit()
Selenium保存網(wǎng)頁為mhtml方法
MHTML即MIME HTML,歸檔網(wǎng)頁,將樣式和腳本全部集成到一個文件中。
Chrome Devtools Protcal API中包含了Page.captureSnapshot方法,可以獲取到網(wǎng)頁的mhtml格式內(nèi)容。
我們使用Selenium的driver.execute_cdp_cmd()執(zhí)行該命令后,將結(jié)果寫入文件即可,示例代碼如下。
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.qq.com/')
# 1. 執(zhí)行 Chome 開發(fā)工具命令,得到mhtml內(nèi)容
res = driver.execute_cdp_cmd('Page.captureSnapshot', {})
# 2. 寫入文件
with open('qq.mhtml', 'w', newline='') as f: # 根據(jù)5樓的評論,添加newline=''
f.write(res['data'])
driver.quit()
保存結(jié)果,如下圖,可以使用瀏覽器打開。
更多的cdp方法可以參考 (chrome-devtools-protocol)[Chrome DevTools Protocol]
如果對你有幫助的話,點個贊收個藏,給作者一個鼓勵。也方便你下次能夠快速查找。
如有不懂還要咨詢下方小卡片,博主也希望和志同道合的測試人員一起學(xué)習(xí)進(jìn)步
在適當(dāng)?shù)哪挲g,選擇適當(dāng)?shù)膷徫?,盡量去發(fā)揮好自己的優(yōu)勢。
我的自動化測試開發(fā)之路,一路走來都離不每個階段的計劃,因為自己喜歡規(guī)劃和總結(jié),
測試開發(fā)視頻教程、學(xué)習(xí)筆記領(lǐng)取傳送門?。?!文章來源:http://www.zghlxwxcb.cn/news/detail-605693.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-605693.html
到了這里,關(guān)于Selenium設(shè)置頁面超時時間-快速終止頁面加載的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!