【发布时间】:2020-09-18 05:40:50
【问题描述】:
我使用 Parsehub API 以 json 格式抓取以下数据,当我想打印某个国家/地区的信息时,我只能获取第一组数据:'name'、'pop'、' area'、'growth'、'worldPer' 和 'rank' 但我无法获得 'image'。
当我打印整个json文件时,数据都在那里,但是当我尝试用图像值打印一个国家数据时,我得到一个关键错误。
有没有办法通过匹配国家名称来合并这两个对象?
main.py
class Data:
def __init__(self, api_key, project_token):
self.api_key = api_key
self.project_token = project_token
self.params = {"api_key":api_key}
self.data = self.get_data()
def get_data(self):
r = requests.get(f'https://www.parsehub.com/api/v2/projects/xxxx/last_ready_run/data', params={"api_key": DATA_API_KEY})
data = json.loads(r.text)
print(r.text)
return data
def data_by_name(self,country):
data = self.data['country']
for content in data:
if content['name'].lower() == country.lower():
print(content)
name = content['name']
pop = content['pop']
popRank = content['rank']
growth = content['growth']
per = content['worldPer']
area = content['area']
image = content['image'] #<----- KeyError: 'image'
return(name,pop,popRank,growth,per,area)
data = Data(DATA_API_KEY,DATA_PROJECT_TOKEN)
data.data_by_name('china')
国家.json
{
"country": [
{
"name": "China",
"pop": "1,438,862,614",
"area": "9,706,961 km²",
"growth": "0.39%",
"worldPer": "18.47%",
"rank": "1"
},
{
"name": "China",
"image": "https://s3.amazonaws.com/images.wpr.com/flag-pages/png250/cn.png"
}
]
}
【问题讨论】:
标签: python python-3.x web-scraping html-parsing parsehub