Python 无法以有组织的方式获取输出
我已经用python编写了一个脚本,用它们的api从一个网页中刮取一些项目的Python 无法以有组织的方式获取输出,python,json,python-3.x,web-scraping,Python,Json,Python 3.x,Web Scraping,我已经用python编写了一个脚本,用它们的api从一个网页中刮取一些项目的名称,以及审阅文本和审阅者。问题是我下面的脚本可以部分完成这些事情。我需要有条理地做这些 例如,在每个项目name中,都有多个review text和reviewer name与其相连。我希望让他们沿着如下列: 名称审阅文本审阅者审阅文本审阅者----- 基本上,我不知道如何在我的脚本中以正确的方式使用已经定义的for循环。最后,很少有项目名称没有任何审阅者或审阅者,因此代码在没有找到任何审阅者时中断,依此类推 这就是我
名称
,以及审阅文本
和审阅者
。问题是我下面的脚本可以部分完成这些事情。我需要有条理地做这些
例如,在每个项目name
中,都有多个review text
和reviewer name
与其相连。我希望让他们沿着如下列:
名称
审阅文本
审阅者
审阅文本
审阅者
-----
基本上,我不知道如何在我的脚本中以正确的方式使用已经定义的for循环
。最后,很少有项目名称
没有任何审阅者
或审阅者
,因此代码在没有找到任何审阅者
时中断,依此类推
这就是我目前的做法:
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
我们将非常感谢您提供的任何帮助。您需要将审阅和审阅者姓名附加到数组中,以便根据需要显示 请尝试以下代码
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'}]}
希望这有帮助 当我执行建议的脚本时,它抛出一个错误:
Traceback(最近一次调用last):文件“C:\Users\WCS\AppData\Local\Programs\Python\Python36-32\demo000000.py”,第65行,在review\u data['reviews']中。append(review\u data)keyrolr:'reviews'
我已经进行了编辑。问题在于变量名。现在检查代码。它似乎是以正确的方式工作的,直到它遇到一个容器,其中没有连接到名称的yelviews
。你能告诉我如何绕过这个错误,因为很少有名字没有评论。顺便说一句,这是我在回溯过程中遇到的错误(最近一次调用):文件“C:\Users\WCS\AppData\Local\Programs\Python\Python36-32\demo000000.py”,第101行,在req.json()中的texualreviews['yelpReviews']:keyrerror:'yelpReviews'。除此之外,请使用try