【问题标题】:python selenium headless chromedriver not loading full page when it was working the day before with no changes to the codepython selenium headless chromedriver在前一天工作时没有加载整页,代码没有变化
【发布时间】:2020-06-10 09:34:02
【问题描述】:

我在 python 3.7.2 上使用 Selenium 从 9gagscrape 用于学校项目。

我在 MacOS 上运行 chrome 80.0.3987.122。 我的 chromedriver 版本是为 80 版提供的。 下面的代码是我如何使用我的驱动程序:

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 驱动程序再次尝试,一切都按预期工作。

据我所知,驱动程序没有显示任何错误。

我的头号嫌疑人是 chrome。我想也许它以某种方式更新了,硒或驱动程序不知道如何处理它。我真的需要使用 headless,因为没有它我不得不专注于 chrome 窗口(这可能是一个 mac 问题,但仍然如此)。

有人遇到过这种情况吗?


更新

我发现我的问题仅在我访问特定类别时才会出现,例如 https://9gag.com/funny。所以我从那里保存了输出并将其加载到 chrome 上并得到以下内容:

headless chrome 似乎陷入了验证码,无法继续加载页面。这怎么可能现在才开始发生,有什么可以做的吗?我们如何解释 geckodriver for firefox 以某种方式克服了这个问题(它有自己的问题,但至少它会加载页面)?

【问题讨论】:

    标签: python selenium google-chrome web-scraping selenium-chromedriver


    【解决方案1】:

    您可以尝试将这 2 个标志添加到您的选项中。第一个将使它不会显示javascript中的“navigator.webdriver = true”变量。网站可以访问该变量以检查您是否使用自动化并阻止您或让您解决验证码。

    下一个是用户代理。继续并将其设置为看起来合法的东西。

    options.add_argument('disable-blink-features=AutomationControlled')
    options.add_argument('user-agent=Type user agent here')
    

    希望这会有所帮助。

    【讨论】:

    • 非常感谢!我从库“fake-useragent”中选择了一个用户代理,现在它和以前一样工作了。请注意,它也可以在没有 disable-blink-features 参数的情况下工作
    • 非常感谢!我一直在寻找这个解决方案??
    • 此解决方案也适用于 java。 ¡ 非常感谢!
    • 看起来使用自定义用户代理也会以通常根本不会加载的无头模式加载网站
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-26
    • 2020-01-10
    相关资源
    最近更新 更多