python - 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()
这并没有引发任何错误,但它返回了网站上的每个元素。
我在这里束手无策......我做错了什么?谢谢!我对此很陌生,所以请多多包涵...
解决方案
由于我不知道您正在处理哪种 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>
推荐阅读
- python - 我想用 django 在 htm 文件中导入 python 代码
- android - Android 将数据从 IntentService 发送到绑定的 Activity
- r - 尝试在 R 中实现套索时出现“参数 Y 缺失”?
- php - MySQL & Eloquent 查询
- apache - NiFi GenerateTableFetch 不存储每个 database.name 的状态
- sql-server - 将记录的数据库列中的数据分解为多条记录
- python - 如何使用 sklearn.countvectorizer?
- c# - 在 ASP.NET Core 中使用 ADO.NET 作为数据访问层
- python - 如何在 Google Dataflow 上安装 python 包并将其导入我的管道?
- java - 可在任何 Android 设备上工作的坐标