使用scrapy中的itemloader返回在给定xpath中找不到的项的默认响应
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用scrapy中的itemloader返回在给定xpath中找不到的项的默认响应相关的知识,希望对你有一定的参考价值。
当itemloader中指定的xpath没有返回任何值时,我需要返回默认值。这是我的一点蜘蛛。我使用了非常基本的itemloader版本:
il = ItemLoader(item = HomesItem(), response=response)
il.add_xpath('Company_Name', u'//*[@id="anchor_realtorOutline"]/div[1]/table/tbody/tr/th[contains(text(), "会社名")]/following-sibling::td/p[1]/ruby/text()')
因此,如果此xpath不返回值,那么我想存储N/A
代替它。有点像我们在这里做的:.extract_first(default="N/A")
和我需要使用itemloader来连接相同字段的几个xpath。对不起,如果这很傻,我还不是很擅长scrapy。谢谢。
答案
您可以尝试添加xpath,然后检查是否为字段集,然后在case字段为空时添加默认值。像这儿:
il = ItemLoader(item = HomesItem(), response=response)
il.add_xpath('Company_Name', u'...')
if not il.get_output_value('Company_Name'):
il.add_value('Company_Name', 'N/A')
以上是关于使用scrapy中的itemloader返回在给定xpath中找不到的项的默认响应的主要内容,如果未能解决你的问题,请参考以下文章
Python爬虫编程思想(152):使用Scrapy抓取数据,使用ItemLoader保存多条抓取的数据
Python爬虫编程思想(152):使用Scrapy抓取数据,使用ItemLoader保存多条抓取的数据
Python爬虫编程思想(151):使用Scrapy抓取数据,用ItemLoader保存单条抓取的数据