python selenium headless chromedriver not loading full page when it was working the day before with no changes to the code
我正在python 3.7.2上使用Selenium从9gag中为学校项目报废。
我在MacOS上运行Chrome 80.0.3987.122。
我的chromedriver版本是为版本80提供的版本。
以下代码是我使用驱动程序的方式:
1 2 3 4 5 6 7 8 9 10 | from selenium import webdriver from selenium.webdriver.chrome.options import Options as c_opt options = c_opt() options.headless = True driver = webdriver.Chrome(executable_path=PATH_TO_DRIVER, chrome_options=options) driver.get('https://www.9gag.com')) with open('source.html', 'w') as f: f.write(driver.page_source) |
昨天一切正常。我将运行此代码并打开源文件,并查看前几篇9gag文章。从今天早上开始,我的源结果显示了一个加载图形,好像它还没有完成加载javascript。
我知道这不是网站的问题,因为我再次使用无头firefox驱动程序和无头chrome驱动程序尝试了此操作,并且一切正常。
据我所知,驱动程序未显示任何错误。
我第一嫌疑人是铬。我认为可能是某种方式进行了更新,selenium或驱动程序不知道如何处理。我真的需要使用headless,因为没有它,我将不得不专注于Chrome窗口(这可能是mac的问题,但仍然如此)。
有人遇到过这种行为吗?
更新
我看到只有在访问特定类别(例如https://9gag.com/funny)时,我的问题才会发生。所以我从那里保存输出并将其加载到chrome上,并得到以下内容:
似乎无头的chrome掉进了验证码,无法继续加载页面。这怎么可能现在才刚刚开始发生,并且有什么事情可以做?我们如何才能解释用于firefox的geckodriver以某种方式克服了这一问题(它有其自身的问题,但至少会加载页面)?
您可以尝试将这两个标志添加到您的选项中。第一个会显示,因此javascript中的" navigator.webdriver = true "变量不会显示。网站可以访问该变量,以检查您是否使用了自动化功能并阻止了您或让您解决了验证码。
下一个是用户代理。继续并将其设置为看起来合法的内容。
1 2 | options.add_argument('disable-blink-features=AutomationControlled') options.add_argument('user-agent=Type user agent here') |
希望这会有所帮助。