【发布时间】:2021-09-28 07:38:32
【问题描述】:
我目前的问题是我想解析一个网站的应用程序 JSON 数据。但是该网站有多个带有应用程序数据的脚本标签,我试图将它们全部获取,而不仅仅是一个。 我目前正在努力让它发挥作用。我有以下代码:
return json.loads("".join(soup.findAll("script", {"type":"application/ld+json"})[1]))
是否有人知道如何摆脱列表索引 ([1]) 并使用 findAll 打印出字典中的每个 JSON 数据?当我删除 [1] 时,我收到以下错误:
sequence item 0: expected str instance, Tag found
完整代码:
def get_ld_json(url: str) -> dict:
parser = "html.parser"
req = requests.get(url)
soup = BeautifulSoup(req.text, parser)
return json.loads("".join(soup.findAll("script", {"type":"application/ld+json"})[1]))
【问题讨论】:
-
script标签包含 javascript,而不是 JSON。我还没有看到只有 JSON 数据的(有用的)script标签,但我想看一些。 -
你可以看看这个答案:stackoverflow.com/a/14264141/4476484。你可以试试
join([str(x) for x in your_list]) -
可以分享网址吗?
-
chefkoch.de/rezepte/1346961239454700/… ,我正在尝试解析配方数据,正如您在 quellcode 中看到的那样,有两个应用程序 ld+json 脚本。我想把这两个都放在一个字典里,因为其他网站(我也想用脚本解析)只有一个应用程序 ld+json。
标签: python json parsing beautifulsoup