Python 在抓取JSON响应时跳过不可用的值
我有一堆网址,我想刮。某些链接具有其他链接中不存在的值。我想知道,如果URL中没有任何值,如何避免出错 我尝试了Python 在抓取JSON响应时跳过不可用的值,python,json,web-scraping,scrapy,Python,Json,Web Scraping,Scrapy,我有一堆网址,我想刮。某些链接具有其他链接中不存在的值。我想知道,如果URL中没有任何值,如何避免出错 我尝试了尝试和除了之外,但没有成功 在本例中,您将在下面的信息中看到4个值。我写了5个值的表达式,它给了我一个错误。如果值不存在,我希望它跳过 这是我的密码: try: location_1 = schools['examInformation'][0]['cbrLocationShortName'] except: pass try:
尝试
和除了
之外,但没有成功
在本例中,您将在下面的信息中看到4个值。我写了5个值的表达式,它给了我一个错误。如果值不存在,我希望它跳过
这是我的密码:
try:
location_1 = schools['examInformation'][0]['cbrLocationShortName']
except:
pass
try:
location_2 = schools['examInformation'][1]['cbrLocationShortName']
except:
pass
try:
location_3 = schools['examInformation'][2]['cbrLocationShortName']
except:
pass
try:
location_4 = schools['examInformation'][3]['cbrLocationShortName']
except:
pass
try:
location_5 = schools['examInformation'][4]['cbrLocationShortName']
except:
pass
yield {
"Location 1": location_1 if location_1 else "N/A",
"Location 2": location_2 if location_2 else "N/A",
"Location 3": location_3 if location_3 else "N/A",
"Location 4": location_4 if location_4 else "N/A",
"Location 5": location_5 if location_5 else "N/A",
}
我得到以下错误:
UnboundLocalError:赋值前引用的局部变量“location_5”
注意:我将scrapy与JSON库一起使用
最简单的修复方法是为except块中的每个变量指定一个None或您的最终“N/a”值,即:
试试看:
地点5=学校['TestFormation'][4]['CBLocationShortName']
除:
位置_5=‘不适用’
屈服{
“位置5”:位置5,
}
如果您希望避免示例中的所有代码重复和异常处理,我将使用安全get方法将其打包到一个循环中:
locations={}
考试信息=学校[“考试信息”]
对于范围内的i(len(考试信息)):
location_key=f'location{i+1}'
位置[location\u key]=考试信息[i]。获取('cbrLocationShortName','N/A')
屈服点
CodeWithawawais我删除了我的答案,因为我太快了,无法判断错误是什么。我建议您使用@Madjazz循环解决方案,它比重复设计更好。