【问题标题】:How to extract a JavaScript fetched information with Requests module?如何使用 Requests 模块提取 JavaScript 获取的信息?
【发布时间】:2016-11-21 15:56:27
【问题描述】:

我需要两个信息来生成将 POST 请求发送到服务器的 url:api_token 和 cid,如下面的 JS 代码所示:

// Run query
fetch(`/ajax/gw-light.php?api_version=1.0&api_token=${encodeURIComponent(config.get('checkForm'))}&input=3&cid=${cid || id}`

我可以通过解析 HTML 来获取令牌,但“cid”是由 JavaScript 中的函数获取的。有没有办法只通过请求来获得这个?

我知道 Selenium,但它非常非常慢。请求直接进入重点。

【问题讨论】:

标签: javascript python web-scraping python-requests


【解决方案1】:

您不能使用 Python 请求来执行此操作,您需要使用无头浏览器,因为 Python 请求不执行 JavaScript。您可能能够看到此代码在哪里执行,例如...如果有一个 api 调用来获取此令牌,那么您可以使用 Python 请求复制它。

底线是 Python 请求和 BeautifulSoup 不执行 JavaScript,它只是 HTTP 而不是浏览器 JS 引擎。

【讨论】:

  • “api 调用”是指“网络”选项卡 (Chrome DevTools) 中的“发起者”?在发布请求中,有一个发起者在第 244 行调用名为“api.js”的 js 代码。你的意思是我可以用 python 语言“翻译”那部分代码以获得我正在寻找的相同值?对不起,我还是菜鸟。
  • 是的,您可以使用 Python 请求复制任何这些 http 调用,只是弄清楚需要发送哪些标头、cookie 和表单数据等很痛苦......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-16
  • 2021-12-07
  • 2019-12-25
  • 1970-01-01
  • 2018-12-02
  • 1970-01-01
相关资源
最近更新 更多