我正在解析不同网址中的一些内容。并非所有网址都具有相同的结构,因此某些网址的代码失败,因此我提出的代码就是这个(简化版):
meta_dict = {}
try:
meta_dict['date_published'] = html.find('date'}).text
except:
meta_dict['date_published'] = ''
try:
meta_dict['headline'] = html.find('headline').text
except:
meta_dict['headline']
try:
meta_dict['description'] = html.find('description').text
except:
meta_dict['description']
return meta_dict
这是一个简化的块,但我们的想法是尝试获取超过50个变量,并为每个变量执行try
except
块,在代码中也感觉过于重复和丑陋。
我知道我可以为它创建一个函数,如果失败则返回''
,但我想知道是否有另一种方法来处理这种情况。
答案 0 :(得分:2)
l = [('date_published', 'date'), ('headline', 'headline'), ('description', 'description')]
for dict_val, html_val in l:
try:
meta_dict[dict_val] = html.find(html_val).text
except:
meta_dict[dict_val] = ''
答案 1 :(得分:1)
如果您检查的这些变量的列表是常量,您可以将它们放入列表中,然后迭代该列表。
vars = [date_publis, hedheadline, description, . . . ]
for var in vars:
try:
meta_dict[var] = html.find(var}).text
except:
meta_dict[var] = ''