【问题标题】:Using Headless Mode With Chrome Less Effective?在 Chrome 中使用 Headless 模式效果不佳?
【发布时间】:2020-05-09 02:24:41
【问题描述】:

我正在使用 selenium + beautiful soup(使用 selenium 打开包含大量 javascript 的页面并使用 javascript 命令将其转换为 BeautifulSoup 对象)从体育网站抓取数据,但由于某种原因我不能使用无头浏览器。当我使用 chromedriver 实现一个无头浏览器时,我抓取的数据几乎没有让 chromedriver 打开并运行时那么多。有没有人遇到过类似的问题或者有什么建议吗?

    def get_bs(self, url, sport_url):
        driver = webdriver.Chrome(executable_path='drivers/chromedriver')
        driver.get(url + sport_url)
        time.sleep(3)

        site = driver.execute_script('return document.documentElement.outerHTML')
        driver.close()
        return BeautifulSoup(site, 'html.parser')

我的项目非常长,包含多个文件。但是,上面是我用来访问网站并将网站转换为 BeautifulSoup 对象的函数,然后我将其抓取到另一个函数中。

谢谢!

【问题讨论】:

    标签: python selenium selenium-webdriver web-scraping selenium-chromedriver


    【解决方案1】:

    实际上,网站很容易通过 navigator.webdriver javascript 变量检测到您正在使用 Chrome 自动化。根据您使用的 Chrome 版本,这仅适用于无头模式。在最近的版本中,他们对此进行了修补(并且在使用 selenium 时始终设置变量)。

    导航到网页后尝试运行:

    print(driver.execute_script("return window.navigator.webdriver"))
    

    如果返回 True,您可能会受到限制/阻止。

    【讨论】:

    • 您的测试结果如何?是否在两次运行中都设置了变量(无头和无头)?
    • 无论是无头模式还是完整的网络浏览器,它们都是“真”。
    • 那可能不是你的问题。确保您也调整了浏览器的大小。
    猜你喜欢
    • 2020-05-09
    • 2014-01-15
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 2019-10-20
    • 2019-11-26
    • 2022-01-08
    • 2013-01-16
    相关资源
    最近更新 更多