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。

  1. HTML 在你的 soup 中从 'lxml' 解析器

    包装
  2. 该任务不需要 beautifulsoup,不,它不是 JSON 解析器。

  3. 改为在您的回复中使用 .json() -> docs

例子
...
json_data = requests.get('YOUR URL').json()

for i in json_data['features']:
    print(i['id'])

...