我已经使用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机器上。我从哪里开始?
答案 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