当带有 extract() 的 Scrapy 选择器返回 None 时如何设置默认值?
Posted
技术标签:
【中文标题】当带有 extract() 的 Scrapy 选择器返回 None 时如何设置默认值?【英文标题】:How to set a default value when Scrapy selector with extract() returns None? 【发布时间】:2019-04-13 18:15:04 【问题描述】:我正在尝试生成一个标签的值,该标签并不总是出现在我用 Scrapy 抓取的页面中。我使用的是extract()
函数而不是extract_first()
。因此,我似乎无法设置默认值,就像 this SO post 中建议的那样。
这不起作用:
def parse(self, response):
yield
'comments': response.css('[itemprop=commentCount]::attr(content)').extract(default=None)
当我想使用extract()
而不是extract_first()
时,如何将None
设置为默认值?
提前非常感谢!
【问题讨论】:
【参考方案1】:.extract()
以列表形式生成输出,.extract_first()
生成字符串。
response.xpath('xpath_of_the_component').extract_first(default="default_value").split()
这行代码将再次将字符串转换为列表并设置默认值(如果不可用)。
【讨论】:
【参考方案2】:试试这个语法:
'comments': response.css('[itemprop=commentCount]::attr(content)').extract() or None
如果response.css(CSS)
的结果为空列表,则None
将被分配为comments
键的值。否则,将分配实际值
【讨论】:
以上是关于当带有 extract() 的 Scrapy 选择器返回 None 时如何设置默认值?的主要内容,如果未能解决你的问题,请参考以下文章