Python 抓取 JavaScript 页面,无需安装浏览器

Put*_* Me 3 javascript python selenium web-scraping

我正在尝试抓取网页中的 HTML 元素。该元素的内容是由 Javascript 生成的,因此不能通过简单地运行 requests.GET: 来抓取 response = requests.get(url)

我在其他帖子中看到Selenium可以用来解决这个问题,但它需要安装实际的浏览器并使用相应的驱动程序。该代码旨在在经常更改的不同计算机上运行,​​因此我无法将其编写为仅在安装了特定浏览器时才有效。

如果有一种方法可以在不依赖特定浏览器的情况下抓取 Javascript 内容,那么这就是我正在寻找的,无论模块如何。

chi*_*ick 7

除了自动化浏览器之外,您的其他两个选项如下:

  1. 尝试找到通过 javascript 加载数据的后端查询。这并不能保证它会存在,但打开浏览器的开发人员工具 - 网络选项卡 - fetch/Xhr,然后刷新页面,希望您会看到对加载所需数据的后端 api 的请求。如果您确实找到了一个请求,请单击它并探索端点、标头以及可能发送的用于获取您正在查找的响应的有效负载,这些都可以使用对该隐藏端点的请求在 python 中重新创建。

  2. 另一种可能性是数据隐藏在脚本标记内的 HTML 中,可能位于 json 文件中...打开开发人员工具的“元素”选项卡,您可以在其中看到页面的 HTML,右键单击该标记,然后单击“展开”递归地”这将打开每个标签(可能需要一秒钟),您将能够向下滚动并搜索您想要的数据。忽略常规 HTML 标签,我们知道它是由 javascript 加载的,因此请查看任何“script”标签。如果您确实找到了它,那么您有望在脚本中找到它,并结合 Beautiful Soup 来获取脚本标签和字符串切片以获取 json。

如果这些都没有产生结果,那么尝试 requests_html 包,特别是“render”方法。当您第一次在脚本中运行 render 方法时,它会自动安装无头浏览器。

这是哪个网站,如果我能看到它,也许我可以提供更多帮助?