垃圾。 Python。将从 Xpath 中提取的数据与字符串进行比较?
Scrapy. Python. Comparing data extracted from Xpath with string?
我正在 web-scraping 使用 scrapy 从网页中获取一些 year 值并尝试检查该值是否为 2015,但我似乎无法正确比较该值与字符串“2015”。
这是我的 Python 代码
`
for i in response.xpath('//********/*******/*******"]'):
if i.xpath('./******/******/text()').extract() == '2015' :
item['testing'] = 'yes'
else :
item['testing'] = 'no'
yield item`
即使提取的值为 2015,它仍然打印 no.
不胜感激,谢谢
我的猜测是您从 extract()
调用中取回了一个列表而不是字符串。如果您只想要一个字符串,请尝试调用 extract_first()
并将其与您的 '2015'
字符串进行比较。
来源:http://doc.scrapy.org/en/latest/topics/selectors.html
To actually extract the textual data, you must call the selector
.extract() method, as follows:
>>> response.xpath('//title/text()').extract()
[u'Example website']
If you want to extract only first matched element, you can call the
selector .extract_first()
>>> response.xpath('//div[@id="images"]/a/text()').extract_first()
u'Name: My image 1 '
这是因为当您在选择器中使用 .xpath
或 .css
时,您得到的是 SelectorList
,正如您想象的那样,是 list
不是 string
。也许你只得到这个列表中的一个元素,所以要比较你可以使用:
i.xpath('./******/******/text()').extract()[0]
或
''.join(i.xpath('./******/******/text()').extract())
或更好
i.xpath('./******/******/text()').extract_first()
我正在 web-scraping 使用 scrapy 从网页中获取一些 year 值并尝试检查该值是否为 2015,但我似乎无法正确比较该值与字符串“2015”。
这是我的 Python 代码 `
for i in response.xpath('//********/*******/*******"]'):
if i.xpath('./******/******/text()').extract() == '2015' :
item['testing'] = 'yes'
else :
item['testing'] = 'no'
yield item`
即使提取的值为 2015,它仍然打印 no.
不胜感激,谢谢
我的猜测是您从 extract()
调用中取回了一个列表而不是字符串。如果您只想要一个字符串,请尝试调用 extract_first()
并将其与您的 '2015'
字符串进行比较。
来源:http://doc.scrapy.org/en/latest/topics/selectors.html
To actually extract the textual data, you must call the selector .extract() method, as follows:
>>> response.xpath('//title/text()').extract() [u'Example website']
If you want to extract only first matched element, you can call the selector .extract_first()
>>> response.xpath('//div[@id="images"]/a/text()').extract_first() u'Name: My image 1 '
这是因为当您在选择器中使用 .xpath
或 .css
时,您得到的是 SelectorList
,正如您想象的那样,是 list
不是 string
。也许你只得到这个列表中的一个元素,所以要比较你可以使用:
i.xpath('./******/******/text()').extract()[0]
或
''.join(i.xpath('./******/******/text()').extract())
或更好
i.xpath('./******/******/text()').extract_first()