gpt4 book ai didi

python - 如何使用json api获取html数据?

转载 作者:行者123 更新时间:2023-12-01 07:57:37 25 4
gpt4 key购买 nike

我正在抓取 khanacademy 上的个人资料页面。我使用他们的 API(json 文件格式)来做到这一点。

这是我想要抓取的个人资料链接:https://www.khanacademy.org/profile/Viruslala/

这是它的 API 链接:https://www.khanacademy.org/api/internal/user/kaid_896965538702696832878421/profile/widgets?lang=en&_=190427-0731-8941ef3f07bd_1556382106890

我的问题:大部分数据显示在 json 文件(API)上。但我想抓取的一些具体数据没有显示。

我尝试搜索不同的 API 链接,但没有找到正确的链接。

在第一张图片上,我想抓取两种数据:蓝色数据和黄色数据。

enter image description here

在 json 文件上:显示蓝色。但不是黄色。

enter image description here

我的问题是:为什么黄色不显示?我如何使用他们的 API 获得黄色信息?

最佳答案

黄色(个人资料信息)可以从原始 URL 响应文本中进行正则表达式处理。

探索json这里。模式r导致提取字符串,该字符串可以用json加载以生成包含所有信息的字典。

import requests
import json
import re

res = requests.get('https://www.khanacademy.org/profile/Viruslala/')
r = re.compile(r'profileInitOptions":(.*),"view"', re.DOTALL)
data = json.loads(r.findall(res.text)[0])
profile_data = data['profileData']
print(profile_data)
<小时/>

注释:

当 javascript 在页面上运行时,页面会从 script 标记动态加载所需的内容。由于 js 不随请求运行,您仍然可以应用正则表达式模式来获取包含感兴趣数据的 javascript 对象。您可以使用以下方式指定模式:

r = re.compile(r'profileInitOptions":(.*),"view"', re.DOTALL)

然后将其应用于响应文本 res.text,并提取第一个返回的匹配项:

r.findall(res.text)[0]

对于这个页面,返回的内容可以用json库解析:

json.loads(r.findall(res.text)[0])

该字符串现在位于名为 data 的字典对象中,您可以通过键从中访问信息

data['profileData']
<小时/>

正则表达式:

enter image description here

<小时/>

re.DOTALL

制作“.”特殊字符完全匹配任何字符,包括换行符;没有这个标志,'.'将匹配除换行符之外的任何内容。对应于内联标志 (?s)。

关于python - 如何使用json api获取html数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55882837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com