chrome瀏覽器爬蟲WebDriverException解決采用python + selenium + chrome + headless模式


WebDriverException: Message: unknown error: Chrome failed to start: crashed

 

第一種:如果出現下面情況:

 

  • chrome瀏覽器有,並且版本也和chromedriver的契合
  • 最近卸載過chrome瀏覽器,並且重新裝過了
  • 無論怎么看,都是正常的

 

如果有以上情況可能存在版本沖突,兩個版本的chrome(我之前就出現過),或者版本不對應,一直出現 Chrome failed to start: crashed

 

解決方案

 

刪除:c:\Users(自己的用戶名)\AppData\Local\Google\Chrome\

有界面形式:

import time
from selenium import webdriver path=r'D:\Anaconda_home\Anaconda3\envs\tensorflow_gpu\Scripts\chromedriver.exe' browser = webdriver.Chrome(executable_path=path)#說明chromedriver.exe的地址 browser.set_window_size(1920, 1080) browser.get('https://www.baidu.com/') browser.get('https://www.taobao.com/') browser.get('https://www.python.org/') browser.back() time.sleep(1) browser.forward() browser.close()

第二種:采用以下:

 

1. 背景
在使用selenium + chrome瀏覽器渲染模式爬取數據時,如果並發任務過多,或者爬蟲的運行時間很長,那么很容易出現瀏覽器崩潰的現象,如下:

這一般是資源消耗過大造成的(據說chrome瀏覽器有內存泄漏的情況)。那如何解決這個問題呢?

這種情況下,我們首先就會想到使用無界面的瀏覽器PhantomJS,但是PhantomJS現在年久失修,后繼無人,對很多新的特性支持並不夠好。不過好在Google今年在chrome中增加了一項新的特性: Headless mode ,這樣我們就可以使用無界面的chrome來爬取數據了,占用資源更少,速度更快。而且可喜的是,google的團隊承諾會一直維護它…

2. 環境
系統:win10
python 3.6.5
IDE:jupyter notebook
安裝過chrome瀏覽器( 75.0.3770.100(正式版本) 64 位)
selenium 3.7.0
配置好ChromeDriver v2.46 

注意:

因為Headless mode 是新推出的特性,只有高級的版本才能使用,並不向前兼容,所以對chrome瀏覽器和chromedriver的版本有要求:
1. 對chrome瀏覽器來說:
linux,unix系統需要 chrome瀏覽器 >= 59
Windows系統需要 chrome瀏覽器 >= 60
2. chromeDriver版本與chrome瀏覽器匹配:
這個部分參考文章:https://www.cnblogs.com/gaofighting/p/10757013.html;最新下載:http://npm.taobao.org/mirrors/chromedriver/

無界面后台靜默運行代碼

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys

chrome_options = webdriver.ChromeOptions()
# 使用headless無界面瀏覽器模式
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')

# 啟動瀏覽器,獲取網頁源代碼
browser = webdriver.Chrome(options=chrome_options)
mainUrl = "https://www.taobao.com/"
browser.get(mainUrl)
print(f"browser text = {browser.page_source}")
browser.get_screenshot_as_file("test.png")#獲取截圖 browser.quit()

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM