我正在尝试产生一个标记的值,该标记在用Scrapy抓取的页面中并不总是存在。我正在使用extract()
函数而不是extract_first()
。因此,我似乎无法像this SO post中建议的那样设置默认值。
这不起作用:
def parse(self, response):
yield {
'comments': response.css('[itemprop=commentCount]::attr(content)').extract(default=None)
}
当我想使用None
而不是extract()
时如何将extract_first()
设置为默认值?
非常感谢!
答案 0 :(得分:4)
尝试以下语法:
{'comments': response.css('[itemprop=commentCount]::attr(content)').extract() or None}
如果response.css(CSS)
的结果为空列表,则None
将被分配为comments
键的值。否则,将分配实际值
答案 1 :(得分:1)
.extract()
产生一个列表输出,.extract_first()
产生一个字符串。
response.xpath('xpath_of_the_component').extract_first(default="default_value").split()
这行代码将再次将字符串转换为列表,并设置默认值(如果不可用)。