首页 > 解决方案 > scrapy xpath中的汉字输入

问题描述

我正在尝试在 Python 2 中使用 Scrapy 抓取中文网站。

我想要所有包含字符“下”的元素。首先我在scrapy shell中尝试了这个:

x = response.xpath('\\*[contains(.,'下')]').extract()

所以我只使用 unicode 或 ASCII,所以我尝试了这些:

x = response.xpath('\\*[contains(.,'\u4e0b')]').extract()
x = response.xpath('\\*[contains(.,u'\u430b')]').extract()
x = response.xpath(u'\\*[contains(.,'\u430b')]').extract()

那些大多返回“行继续后的意外字符......”错误。

然后我尝试了:

y = '下'.decode('utf-8')    
x = response.xpath('\\*[contains(.,y)]').extract()

这并没有引发任何错误,但它返回了网站上的每个元素。

我在这里束手无策......我做错了什么?谢谢!我对此很陌生,所以请多多包涵...

标签: pythonunicodescrapy

解决方案


由于我不知道您正在处理哪种 html,因此我创建了可以工作的最小示例。

from scrapy.selector import Selector

body = '<html><body><div><h1>下&lt;/h1></div></body></html>'
special_char = '下'
x = Selector(text=body).xpath(u"//h1[contains(.,'{0}')]".format(special_char)).extract() 
print(x[0])

<h1>下&lt;/h1>

推荐阅读