我已经用python编写了一个脚本,使用它们的api从网页上刮除与每个项目名称相关的names
和review texts
以及一些项目reviewers
。事情是我的下面的脚本可以部分地做那些事情。我需要有条理地做这些事情。
例如,在每个项目name
中,有多个review texts
和reviewer names
连接到它。我希望让他们进入以下栏目:
Name
review text
reviewer
review text
reviewer
-----
基本上,我不知道如何在脚本中以正确的方式利用已经定义的for loop
。最后,很少有没有任何names
或reviews
的项目reviewers
,所以当找不到任何reviews
时代码就会中断,等等。
到目前为止,这是我的方法:
import requests
url = "https://eatstreet.com/api/v2/restaurants/{}?yelp_site="
res = requests.get("https://eatstreet.com/api/v2/locales/madison-wi/restaurants")
for item in res.json():
itemid = item['id']
req = requests.get(url.format(itemid))
name = req.json()['name']
for texualreviews in req.json()['yelpReviews']:
reviews = texualreviews['message']
reviewer = texualreviews['reviewerName']
print(f'{name}\n{reviews}\n{reviewer}\n')
如果我在for循环外使用print语句,它只会给我一个review
和reviewer
。
任何修复问题的帮助将受到高度赞赏。
答案 0 :(得分:1)
您需要将评论和评论者名称附加到数组中以根据需要显示。
尝试以下代码。
review_data = dict()
review_data['name'] = req.json()['name']
review_data['reviews'] = []
for texualreviews in req.json()['yelpReviews']:
review_sub_data = {'review': texualreviews['message'], 'reviewer': texualreviews['reviewerName']}
review_data['reviews'].append(review_sub_data)
#O/P {'name': 'xxx', 'reviews':[{'review':'xxx', 'reviewer': 'xxx'}, {'review':'xxx', 'reviewer': 'xxx'}]}
希望这会有所帮助!