无头硒突然停止工作

时间:2019-03-21 08:16:07

标签: python selenium selenium-webdriver web-scraping

我已经使用Selenium和python进行网页抓取了两周了。它一直运行良好。在macOS和Windows 7上运行。但是突然间,无头Web驱动程序停止工作。我一直在使用具有以下设置的chromedriver:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument("--headless")
options.add_argument('--no-sandbox')
options.add_argument('--disable-gpu')
chrome_options.add_argument("--window-size=1920x1080")
driver = webdriver.Chrome(chrome_options=options)

driver.get('url')

最初,我必须添加window,gpu和sandbox参数才能使其正常运行,直到现在它仍然可以正常工作。但是,现在运行脚本时,它卡在driver.get('url')处。它不会产生错误,或者似乎只是无限期地运行。当我无头奔跑而只是奔跑时:

from selenium import webdriver
driver = webdriver.Chrome()

driver.get('url')

它完全按预期工作。这个问题也隔离到我的Windows机器上。我从哪里开始?

3 个答案:

答案 0 :(得分:0)

更新!

我做了一些测试,意识到它似乎可以工作。但是,运行driver.get('url')需要花费很长时间,以至于它似乎是无限加载的。同时,它可以在我的macOS上完美运行,因此问题仅在Windows中运行。下面的示例需要10秒钟以上的时间才能简单地打开google,然后退出。可能是什么原因造成的?

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument("--headless")
options.add_argument('--no-sandbox')
options.add_argument('--disable-gpu')
chrome_options.add_argument("--window-size=1920x1080")
driver = webdriver.Chrome(options=options, executable_path=r'C:\Program Files (x86)\Python37-32\chromedriver.exe')

driver.get('http://google.com/')
print("Headless Chrome Initialized on Windows OS")

print('Hello world')
driver.quit()

答案 1 :(得分:0)

已解决

由于某种原因,代理服务器设置降低了它的速度。因此,它通过添加以下内容得到解决:

List

答案 2 :(得分:0)

我有完全一样的问题。在脚本运行正常数周后,它随机出现。 OP已将我引向正确的方向,但是他的解决方案对我没有用。我必须添加:

chrome_options.add_argument("--no-proxy-server")
chrome_options.add_argument("--proxy-server='direct://'");
chrome_options.add_argument("--proxy-bypass-list=*");

我的完整代码:

chrome_options = Options()  
chrome_options.add_argument("--headless")  
chrome_options.add_argument("--start-maximized")
chrome_options.add_argument("--start-fullscreen")
chrome_options.add_argument("--no-proxy-server")
chrome_options.add_argument("--proxy-server='direct://'");
chrome_options.add_argument("--proxy-bypass-list=*");
chrome_options.binary_location = "C:\Program Files (x86)\Google\Chrome Dev\\Application\chrome.exe" 

browser = webdriver.Chrome(options=chrome_options) 
browser.set_window_size(2000, 1080)

也请参阅:

Headless chrome driver too slow 和: Chrome webdriver produces timeout in selenium