Beautiful Soup 解析来自 JSON 的值
Beautiful Soup parsing values from JSON
我正在做一个小项目,我有这个网站:
https://earthquake.usgs.gov/ws/designmaps/nehrp-2020.json?latitude=20.85&longitude=-156.5&riskCategory=IV&siteClass=Default&title=
我需要解析“sds”和“sd1”的值。
我尝试过使用以下代码:
from urllib import request
from bs4 import BeautifulSoup
import json
url = "https://earthquake.usgs.gov/ws/designmaps/nehrp-2020.json?latitude=20.85&longitude=-156.5&riskCategory=IV&siteClass=Default&title="
html = request.urlopen(url).read()
soup = BeautifulSoup(html, "html.parser")
site_json = json.loads(soup.text)
print([d.get("sd1") for d in site_json["response"] if d.get("sd1")])
作为回应,我得到:
Traceback (most recent call last):
File "C:\Users\Bigboi\PycharmProjects\importpaska\main.py", line 10, in <module>
print([d.get("sd1") for d in site_json["response"] if d.get("sd1")])
File "C:\Users\Bigboi\PycharmProjects\importpaska\main.py", line 10, in <listcomp>
print([d.get("sd1") for d in site_json["response"] if d.get("sd1")])
AttributeError: 'str' object has no attribute 'get'
Process finished with exit code 1
谁能帮帮我?
仅使用 requests
模块即可获取所需数据
import requests
import json
url = "https://earthquake.usgs.gov/ws/designmaps/nehrp-2020.json?latitude=20.85&longitude=-156.5&riskCategory=IV&siteClass=Default&title="
data=requests.get(url).json()
# data=json.dumps(data)
# with open('data.json','w') as f:
# f.write(data)
sds=data['response']['data']['sds']
sd1=data['response']['data']['sd1']
print(sds)
print(sd1)
输出:
0.59
0.38
site_json["response"] 是字典,您不能那样迭代,而且 site_json["response"] 中没有名为 sd1 的键。如果你想解析 sd1 和 sds 的值,试试这个:
print(site_json["response"]["data"]["sd1"])
print(site_json["response"]["data"]["sds"])
我正在做一个小项目,我有这个网站: https://earthquake.usgs.gov/ws/designmaps/nehrp-2020.json?latitude=20.85&longitude=-156.5&riskCategory=IV&siteClass=Default&title=
我需要解析“sds”和“sd1”的值。
我尝试过使用以下代码:
from urllib import request
from bs4 import BeautifulSoup
import json
url = "https://earthquake.usgs.gov/ws/designmaps/nehrp-2020.json?latitude=20.85&longitude=-156.5&riskCategory=IV&siteClass=Default&title="
html = request.urlopen(url).read()
soup = BeautifulSoup(html, "html.parser")
site_json = json.loads(soup.text)
print([d.get("sd1") for d in site_json["response"] if d.get("sd1")])
作为回应,我得到:
Traceback (most recent call last):
File "C:\Users\Bigboi\PycharmProjects\importpaska\main.py", line 10, in <module>
print([d.get("sd1") for d in site_json["response"] if d.get("sd1")])
File "C:\Users\Bigboi\PycharmProjects\importpaska\main.py", line 10, in <listcomp>
print([d.get("sd1") for d in site_json["response"] if d.get("sd1")])
AttributeError: 'str' object has no attribute 'get'
Process finished with exit code 1
谁能帮帮我?
仅使用 requests
模块即可获取所需数据
import requests
import json
url = "https://earthquake.usgs.gov/ws/designmaps/nehrp-2020.json?latitude=20.85&longitude=-156.5&riskCategory=IV&siteClass=Default&title="
data=requests.get(url).json()
# data=json.dumps(data)
# with open('data.json','w') as f:
# f.write(data)
sds=data['response']['data']['sds']
sd1=data['response']['data']['sd1']
print(sds)
print(sd1)
输出:
0.59
0.38
site_json["response"] 是字典,您不能那样迭代,而且 site_json["response"] 中没有名为 sd1 的键。如果你想解析 sd1 和 sds 的值,试试这个:
print(site_json["response"]["data"]["sd1"])
print(site_json["response"]["data"]["sds"])