有时我会收到以下消息:
in process_item item['external_link_rel'] = dict_["rel"]
KeyError: 'rel'
一定是因为它根本不存在。我试着管理,但失败了。
from lxml import etree
class CleanItem():
def process_item(self, item, spider):
try:
root = etree.fromstring(str(item['external_link_body']).split("'")[1])
dict_ = {}
dict_.update(root.attrib)
dict_.update({'text': root.text})
item['external_link_rel'] = dict_["rel"]
return item
except KeyError as EmptyVar:
if str(EmptyVar) == 'rel':
dict_["rel"] = "null"
item['external_link_rel'] = dict_["rel"]
return item
最有可能的是,所有问题都是由于if str(EmptyVar) == 'rel'
这一行造成的。
感谢您指导我仅在发生此错误时执行操作。
在提出这个问题之前,我做了大量的研究,没有得出结论
仅供参考,上述代码位于pipelines.pyScrapy框架内的www.example.com文件中
2条答案
按热度按时间dauxcl2d1#
更好的方法是使用字典属性
get
。yqlxgs2m2#
为什么不直接使用条件语句呢?
如果你真的想使用try/except子句,你可以这样做。我永远不会推荐使用try/except子句,尽管它是不必要的。