如何在Scrapy选择器返回None时设置默认值

时间:2016-06-30 21:02:33

标签: python xpath web-scraping scrapy

当我的xpath选择器的结果返回None时,我试图设置默认值。当在某些页面中xpath节点不存在并且我想设置例如' N / A'或'未找到'。

我使用了以下代码,但我认为这不是干净而有效的:

value = response.xpath(property.xpath).extract_first()

if(value != None):
    data[property.name] = response.xpath(property.xpath).extract_first()
else:
    data[property.name] = "N/A"

有什么想法吗?感谢

1 个答案:

答案 0 :(得分:8)

无需执行两次查询,一个简单的解决方案是传递默认值:

data[property.name] = response.xpath(property.xpath).extract_first(default='N/A')

为了将来参考,如果您在不使用default关键字的情况下重写自己的代码,我会查询一次并使用if / else:

value = response.xpath(property.xpath).extract_first()
data[property.name] = value if value else "N/A"