使用XPath和scrapy提取第一个元素

使用XPath和scrapy提取第一个元素,xpath,web-scraping,scrapy,Xpath,Web Scraping,Scrapy,我使用.extract()从xpath获取数据,如: response.xpath('//*@id="bakery"]/span[2]/text()').extract() 问题是我总是得到一个列表作为回应。 例如: ['23'] 我只想要号码,所以我尝试: response.xpath('//*@id="bakery"]/span[2]/text()').extract()[0] 但这是一个问题,列表为空,尽管我可以使用异常来处理这种情况,但我想有更好的方法来处理它 response.x

我使用
.extract()
从xpath获取数据,如:

response.xpath('//*@id="bakery"]/span[2]/text()').extract()
问题是我总是得到一个列表作为回应。 例如:

['23']
我只想要号码,所以我尝试:

response.xpath('//*@id="bakery"]/span[2]/text()').extract()[0]
但这是一个问题,列表为空,尽管我可以使用异常来处理这种情况,但我想有更好的方法来处理它

response.xpath('//*@id="bakery"]/span[2]/text()').extract_first()

如果没有匹配的元素,它将返回
None

可以使用新的Scrapy内置方法
get()
代替
extract\u first()
,该方法始终返回字符串,如果没有元素,则返回
None

response.xpath('/*@id=“bakery”]/span[2]/text()).get()