JavaScript 在请求包中 python
JavaScript in requests package python
我想使用 Python 从站点获取文本。
但是站点使用 JavaScript 和请求包只接收 JavaScript 代码。
有没有不使用 Selenium 获取文本的方法?
import requests as r
a=r.get('https://aparat.com/').text
如果站点使用 javascript 加载内容,则 javascript 必须是 运行 才能获取内容。我 运行 不久前在做一些网络抓取时遇到了这个问题,最终使用了 Selenium。是的,它比 BeautifulSoup 慢,但它是最简单的解决方案。
如果您知道服务器的工作原理,您可以发送一个请求,它应该 return 包含某种内容(无论是 html、json 等)
编辑:加载开发者工具,转到网络选项卡并刷新页面。查找 XHR 请求及其使用的 URL。您或许可以根据需要使用这些数据。
例如,我找到了这些 URL:
https://www.aparat.com/api/fa/v1/etc/page/config/mode/full
https://www.aparat.com/api/fa/v1/video/video/list/tagid/1?next=1
如果您在浏览器中导航到这些内容,您会注意到 JSON 内容,您也许可以使用它。我认为有些文本是用 Unicode 编码的,例如 \u062e\u0644\u0627\u0635\u0647 \u0628\u0627\u0632\u06cc -> خلاصه باوی
我不知道您可能使用的具体 python 实现。寻找支持发出 http 请求和接收数据的库。这样你就可以避免硒。但是您必须事先知道 URL。如上所示。
例如,我会这样做:
- 向您在开发人员工具中找到的 URL 发出 http 请求
- 对于 JSON 内容,使用 JSON 解析器在本地获取 table/array/dictionary。然后,您可以使用本机编程语言遍历它。
- 使用 unicode 解码器获取普通文本格式的文本,可能有一个库可以执行此操作,但是例如在 this website 上使用“Decode/Unescape Unicode 实体”我能够获取文本。
希望对您有所帮助。
示例代码:
import requests;
req = requests.get('https://www.aparat.com/api/fa/v1/video/video/show/videohash/IueKs?pr=1&mf=1&referer=direct')
res = req.json()
#do stuff with res
print(res)
我想使用 Python 从站点获取文本。 但是站点使用 JavaScript 和请求包只接收 JavaScript 代码。 有没有不使用 Selenium 获取文本的方法?
import requests as r
a=r.get('https://aparat.com/').text
如果站点使用 javascript 加载内容,则 javascript 必须是 运行 才能获取内容。我 运行 不久前在做一些网络抓取时遇到了这个问题,最终使用了 Selenium。是的,它比 BeautifulSoup 慢,但它是最简单的解决方案。
如果您知道服务器的工作原理,您可以发送一个请求,它应该 return 包含某种内容(无论是 html、json 等)
编辑:加载开发者工具,转到网络选项卡并刷新页面。查找 XHR 请求及其使用的 URL。您或许可以根据需要使用这些数据。
例如,我找到了这些 URL:
https://www.aparat.com/api/fa/v1/etc/page/config/mode/full https://www.aparat.com/api/fa/v1/video/video/list/tagid/1?next=1
如果您在浏览器中导航到这些内容,您会注意到 JSON 内容,您也许可以使用它。我认为有些文本是用 Unicode 编码的,例如 \u062e\u0644\u0627\u0635\u0647 \u0628\u0627\u0632\u06cc -> خلاصه باوی
我不知道您可能使用的具体 python 实现。寻找支持发出 http 请求和接收数据的库。这样你就可以避免硒。但是您必须事先知道 URL。如上所示。
例如,我会这样做:
- 向您在开发人员工具中找到的 URL 发出 http 请求
- 对于 JSON 内容,使用 JSON 解析器在本地获取 table/array/dictionary。然后,您可以使用本机编程语言遍历它。
- 使用 unicode 解码器获取普通文本格式的文本,可能有一个库可以执行此操作,但是例如在 this website 上使用“Decode/Unescape Unicode 实体”我能够获取文本。
希望对您有所帮助。
示例代码:
import requests;
req = requests.get('https://www.aparat.com/api/fa/v1/video/video/show/videohash/IueKs?pr=1&mf=1&referer=direct')
res = req.json()
#do stuff with res
print(res)