使用 Chromium 浏览器进行 Python 网页抓取无法加载 Javascript,但 Chrome 可以

问题描述 投票:0回答:1

我正在尝试使用使用 Chromium 浏览器的 requests-html 模块来抓取特定的 url。然而 Chromium 无法加载 Javascript 部分并触发超时错误。我认为 html.render() 会渲染任何 Javascript 代码。我使用 Selenium(使用 Google Chrome webdriver)测试了另一个 python 脚本,它运行得很好。

所以我尝试手动启动Chromium.exe(从%localappdata%\pyppeteer\pyppeteer\local-chromium)并直接浏览url,加载Javascript部分需要很长时间。我的 Chromium 版本是 [71.0.3542.0(开发人员版本)(64 位)],它是在我第一次运行下面的 python 脚本时安装的。我应该怎么做才能让 Chromium 支持 Javascript(最好是在 python 脚本中)?

from requests_html import HTMLSession

webURL = "https://mphonline.com/collections/architecture-landscaping"
session = HTMLSession(pyppeteer_kwargs = {'handleSIGINT' : False,
                               'handleSIGTERM': False,
                               'handleSIGHUP': False,
                               'headless': False,
                               }
                           )

root = session.get(webURL)
root.html.render(timeout= 30, keep_page=True)    # default timeout is 8sec

titlesxpath = "//div[contains(@class, 'boost-sd__product-title')]"
titles = root.html.xpath(titlesxpath)  # find title element
for title in titles:
    print(title.text)

session.close()
javascript web-scraping chromium python-requests-html
1个回答
0
投票

花了一段时间才弄清楚如何更新 Chromium,并最终根据以下提示让我的脚本正常工作: https://github.com/pyppeteer/pyppeteer/issues/291

https://pyppeteer.github.io/pyppeteer/reference.html

第 1 步:前往 https://chromium.cypress.io/ 并找到适合您的 Windows 平台(x86 或 x64)的最新 Chromium 版本,目前为 121.0.6157.1。点击“获取下载”并找到基础版本号,目前为1231099。下载“chrome-win.zip”文件,然后创建基础版本文件夹%localappdata%\pyppeteer\pyppeteer\local-chromiumS1099。最后在这里解压文件“chrome-win.zip”。

Step2:在 Windows 系统环境变量中,创建新变量名称“PYPPETEER_CHROMIUM_REVISION”,其值等于基本修订号“1231099”。然后重新启动电脑。

Step3:运行 python 脚本。 Chromium 应该支持最新的 Javascript 代码。

© www.soinside.com 2019 - 2024. All rights reserved.