我使用.extract()
从xpath获取数据,例如:
response.xpath('//*@id="bakery"]/span[2]/text()').extract()
这个问题是我总是得到一个列表作为回应。 例如:
['23']
我只想要这个号码,所以我试着用:
response.xpath('//*@id="bakery"]/span[2]/text()').extract()[0]
但这是一个问题,列表是空的,虽然我可以使用异常来处理那个场景我想有更好的方法来做到这一点
答案 0 :(得分:7)
.extract_first()
救援:
response.xpath('//*@id="bakery"]/span[2]/text()').extract_first()
如果没有匹配的元素,它将返回None
而不是异常。
答案 1 :(得分:1)
有一种新的Scrapy内置方法get()
可以代替extract_first()
使用,它总是返回一个字符串,如果没有元素,则返回None
。
response.xpath('//*@id="bakery"]/span[2]/text()').get()