unicode - Scrappy 的方法 re() 不适用于 Unicode 字符串

标签 unicode scrapy

我正在 Windows 7 和 scrappy 交互式控制台(基于 IPython)中工作。

我正在执行步骤Trying Selectors in the Shell在教程中

如果我抓取一些带有英文字母标题的网站,一切都很好,就像教程中一样:

In [5]: hxs.select('//title/text()').re('(\w+):')`
Out[5]: [u'Computers', u'Programming', u'Languages', u'Python']`

但是如果我抓取包含非英文字母(俄语、Unicode)的网站,re() 方法不会返回任何内容:

In [25]: hxs.select('//title/text()').re('(\w+)')
Out[25]: []

标题中有一些文字,它不为空:

In [24]: hxs.select('//title/text()').extract()
Out[24]: [u'\u041b\u043e\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u0430\u0431\u043e\u043d\u0435\u043d\u0442\u043e\u0432']

帮帮我,我可以将 scrapy' re() 与 unicode 符号一起使用吗?

最佳答案

听起来 Scrapy 的正则表达式没有使用 re.UNICODE 标志,因此 \w 不包含所有 Unicode 定义的“单词”字符。

文档似乎表明 Scrapy 的 .re 可以采用已编译的正则表达式,因此您可以尝试使用 UNICODE 标志自行编译正则表达式:

import re
hxs.select('//title/text()').re(re.compile('(\w+)', re.UNICODE))

关于unicode - Scrappy 的方法 re() 不适用于 Unicode 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9577042/

相关文章:

PHP:使用 PDO 从 MySQL 数据库输出 utf8 时出现问题

python - 从 python 代码将 unicode 值插入 sqlite

Javascript 正则表达式西里尔字母模式

python - Scrapy 和可用的可能性

macos - 在哪里可以找到 OSX 支持的所有表情符号的列表

c# - 带有 TextBlock 的 BulletDecorator 不显示 Unicode 字符

python - 如何从 python 脚本运行并保存 scrapy 状态

python-3.x - Scrapy Extract 方法产生 Cannot mix str and non-str arguments 错误

python - 如何使用 psycopg2 将 scrapy 项目(或字典/命名元组)放入 postgres 存储过程(函数)中执行插入

python - 如何加载带参数的起始 URL?