如何使用 BeautifulSoup 和 Python 调用 JavaScript 函数

新手上路,请多包涵

作为我项目的一部分,我正在执行网络抓取以从网站获取数据。我可以发出请求并获取 dom 中存在的数据。但是,一些数据正在 javascript onClick 函数上呈现。

一种方法是,使用 selenium 单击链接(调用 javascript 函数)并获取呈现的数据,但这个过程很耗时,我不想打开浏览器。

除了硒还有其他方法可以实现这一目标吗?

网站: http ://catalog.fullerton.edu/preview_entity.php?catoid=16&ent_oid=1849

在这个网页的 课程 部分,所有课程都是超链接,只要有人点击课程,就会调用一个 javascript 方法。我需要在 javascript 函数调用后呈现的数据。

原文由 miserable 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 498
2 个回答

你不能。如果要运行 JavaScript,则需要使用无头浏览器。否则,您将不得不反汇编 JavaScript 并查看它的作用。

在网络选项卡中打开浏览器的开发人员工具时单击该元素:

在此处输入图像描述

您现在可以看到 JavaScript 从该 URL 下载新的 HTML。您可以使用 urllib 轻松发送相同的请求。

原文由 Blender 发布,翻译遵循 CC BY-SA 3.0 许可协议

你可以使用 https://pypi.org/project/requests-html/ 这个库来渲染 JavaScript 内容,然后使用漂亮的汤来解析它。

例子:

 from requests_html import HTMLSession

def render_JS(URL):
    session = HTMLSession()
    r = session.get(URL)
    r.html.render()
    return r.html.text

原文由 Ahmad Amin Farooq 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题