我正在尝试使用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()
这没有引起任何错误,但它返回了网站上的每个元素。
我在这里结束了......我做错了什么?谢谢!我对此很陌生,请耐心等待......
答案 0 :(得分:0)
由于我不知道你正在处理什么样的HTML,我创建了最小的样本。
from scrapy.selector import Selector
body = '<html><body><div><h1>下</h1></div></body></html>'
special_char = '下'
x = Selector(text=body).xpath(u"//h1[contains(.,'{0}')]".format(special_char)).extract()
print(x[0])
给出
<h1>下</h1>