Beautiful Soup 解析 HTML 包含 JSON
Beautiful Soup parsing HTML containing JSON
使用 Python3 并尝试使用 Beautiful Soup 解析似乎包含 JSON 对象的 NWS 天气警报,并得到了这么远:BS 输出这个(输出顶部的片段)
>>> soup.body
<body><p>{
"@context": [
"https://geojson.org/geojson-ld/geojson-context.jsonld",
{
"@version": "1.1",
"wx": "https://api.weather.gov/ontology#",
"@vocab": "https://api.weather.gov/ontology#"
}
],
"type": "FeatureCollection",
"features": [
{
"id": "https://api.weather.gov/alerts/urn:oid:2.49.0.1.840.0.957a95b11de1ec54b622b137ccf43a662d44061f.001.1",
"type": "Feature",
"geometry": null,
"properties": ....(snip)
据我了解,“@context”标记表示大括号内的后续行是 JSON 数据;对吗?
如何获取方括号和花括号内的元素?
BS 显然有一个 JSON 解析器,但我还没有找到任何关于如何处理这种情况的新手的好教程。
欢迎指点。
问题应该通过一些额外的细节来改进,正如评论中提到的那样,它看起来不像是简单的回答 HTML 而是 JSON。
HTML 在你的 soup
中从 'lxml' 解析器
包装
该任务不需要 beautifulsoup
,不,它不是 JSON 解析器。
改为在您的回复中使用 .json()
-> docs
例子
...
json_data = requests.get('YOUR URL').json()
for i in json_data['features']:
print(i['id'])
...
使用 Python3 并尝试使用 Beautiful Soup 解析似乎包含 JSON 对象的 NWS 天气警报,并得到了这么远:BS 输出这个(输出顶部的片段)
>>> soup.body
<body><p>{
"@context": [
"https://geojson.org/geojson-ld/geojson-context.jsonld",
{
"@version": "1.1",
"wx": "https://api.weather.gov/ontology#",
"@vocab": "https://api.weather.gov/ontology#"
}
],
"type": "FeatureCollection",
"features": [
{
"id": "https://api.weather.gov/alerts/urn:oid:2.49.0.1.840.0.957a95b11de1ec54b622b137ccf43a662d44061f.001.1",
"type": "Feature",
"geometry": null,
"properties": ....(snip)
据我了解,“@context”标记表示大括号内的后续行是 JSON 数据;对吗?
如何获取方括号和花括号内的元素?
BS 显然有一个 JSON 解析器,但我还没有找到任何关于如何处理这种情况的新手的好教程。
欢迎指点。
问题应该通过一些额外的细节来改进,正如评论中提到的那样,它看起来不像是简单的回答 HTML 而是 JSON。
HTML 在你的
包装soup
中从 'lxml' 解析器该任务不需要
beautifulsoup
,不,它不是 JSON 解析器。改为在您的回复中使用
.json()
-> docs
例子
...
json_data = requests.get('YOUR URL').json()
for i in json_data['features']:
print(i['id'])
...