Scrapy-xpath中有汉字时出现意外返回

时间:2018-10-23 05:02:47

标签: python xpath scrapy

我是新来的,我知道有一个类似的问题。但是,我认为这个问题没有解决。

我正在使用的scrapy版本是1.0.3,环境位于virtualbox中。我想做的就是从

中删除所有信息
  

https://bj.lianjia.com/zufang/rs%E8%A5%BF%E4%BA%8C%E6%97%97/

在@title中带有“西二旗”。我的脚本是这样的:

keywords = u'领秀'

response.xpath('//h2/a[contains(@title,keywrods)]/text()').extract()

输出如下:

[u'\u897f\u4e8c\u65d7\u9886\u79c0\u65b0\u7845\u8c37\u81ea\u4f4f\u578b\u8054\u6392\u522b\u5885', u'\u91d1\u5c71\u8f6f\u4ef6 \u5c0f\u7c73 \u4e94\u5f69\u57ce \u897f\u4e8c\u65d7\u8f6f\u4ef6\u56ed', u'\u9f99\u5174\u56ed\u7cbe\u88c5\u4e24\u5c45\u5ba4\uff0c\u9f99\u6cfd\u56de\u9f99\u89c2\u897f\u4e8c\u65d7\u5317\u6e05\u8def\u3002', u'\u878d\u6cfd\u5609\u56ed\u897f\u4e8c\u65d7\u9f99\u6cfd \u7cbe\u88c5\u4e09\u5c45 \u6708\u5e95\u62ce\u5305\u5165\u4f4f', u'\u9f99\u5174\u56ed\u5317\u533a\u53f2\u8bd7\u7ea7\u7cbe\u88c5\u4fee\u4e24\u5c45\u5ba4\uff0c\u9f99\u6cfd\u56de\u9f99\u89c2\u897f\u4e8c\u65d7\u3002', u'\u4e94\u5f69\u57ce \u5c0f\u7c73 \u91d1\u5c71\u8f6f\u4ef6 \u897f\u4e8c\u65d7\u8f6f\u4ef6\u56ed \u4e0a\u5730\u4e09\u8857', u'\u6b63\u89c4\u5357\u5317\u901a\u900f\u5927\u4e24\u5c45\u6708\u5e95\u5230\u671f\u897f\u4e8c\u65d7\u8f6f\u4ef6\u56ed\u767e\u5ea6', u'\u56de\u9f99\u89c2\u9f99\u6cfd\u897f\u4e8c\u65d7\u5317\u4eac\u4eba\u5bb6\u7cbe\u88c5\u4e24\u5c45\u5bbd\u655e\u660e\u4eae\u62ce\u5305\u4f4f', u'\u897f\u4e8c\u65d7\u9f99\u6cfd\u7535\u68af\u697c\u843d\u5730\u7a97\u5317\u4eac\u4eba\u5bb6\u4e24\u5c45\u7cbe\u88c5\u62ce\u5305\u4f4f']

将返回所有不包含关键字的元素。

所以我真的很想知道发生了什么。我也尝试了     $x('//h2/a[contains(@title,"领秀")]') 并且工作正常(仅返回一个元素)。

1 个答案:

答案 0 :(得分:0)

您的代码并不会像这样隐式扩展xpath上的变量:

keywords = u'领秀'
response.xpath('//h2/a[contains(@title,keywrods)]/text()').extract()
                                      ^^^^^^^^^

应该是:

keywords = u'领秀'
# python 3.6+
response.xpath(f'//h2/a[contains(@title,"{keywrods}")]/text()').extract()
# python 2/3
response.xpath(u'//h2/a[contains(@title,"{}")]/text()'.format(keywords)).extract()