使用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()