垃圾。 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()