Bel*_*oko 5 python selenium google-chrome web-scraping selenium-chromedriver
我使用的Python 3.7.2硒刮从9GAG的学校项目。
我在 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)
Run Code Online (Sandbox Code Playgroud)
昨天一切正常。我会运行此代码并打开源文件并查看前几篇 9gag 文章。从今天早上开始,我的源结果显示了一个加载图形,好像它没有完成加载 javascript。
我知道这不是网站的问题,因为我再次尝试使用无头 Firefox 驱动程序和非无头 chrome 驱动程序,一切都按预期工作。
据我所知,驱动程序没有显示任何错误。
我的第一嫌疑人是铬。我想也许它以某种方式更新了,而 selenium 或驱动程序不知道如何处理它。我真的需要使用无头,因为没有它我被迫专注于 chrome 窗口(这可能是 mac 问题,但仍然如此)。
有没有人遇到过这种行为?
更新
我发现我的问题仅在我访问特定类别时发生,例如https://9gag.com/funny。所以我从那里保存了输出并将其加载到 chrome 上并得到以下内容:
似乎无头 chrome 陷入了验证码,无法继续加载页面。这怎么可能现在才开始发生,有什么可以做的吗?我们如何解释 firefox 的 geckodriver 以某种方式克服了这个问题(它有自己的问题,但至少它加载了页面)?
您可以尝试将这 2 个标志添加到您的选项中。第一个将使 javascript 中的“navigator.webdriver=true”变量不显示。站点可以访问该变量以检查您是否使用自动化并阻止您或让您解决验证码。
下一个是用户代理。继续并将其设置为看起来合法的东西。
options.add_argument('disable-blink-features=AutomationControlled')
options.add_argument('user-agent=Type user agent here')
Run Code Online (Sandbox Code Playgroud)
希望这会有所帮助。
归档时间: |
|
查看次数: |
1772 次 |
最近记录: |