我正在学习scrapy。我正在使用scrapy 0.20这就是我遵循本教程的原因。 http://doc.scrapy.org/en/0.20/intro/tutorial.html
我理解了这些概念。但是,我还有一件事。
在本声明中
sel.xpath('//title/text()').re('(\w+):')
输出
[u'Computers', u'Programming', u'Languages', u'Python']
什么是 re('(\ w +):')请使用吗?
这句话
sel.xpath('//title/text()').extract()
有这个输出:
[u'Open Directory - Computers: Programming: Languages: Python: Books']
为什么在元素之间添加逗号,
?
此外,所有':'都被删除。
而且:这是一个python纯语法吗?
答案 0 :(得分:2)
这是一个正则表达式(正则表达式),它本身就是一个整体世界。
(\ w +):将返回以冒号结尾的任何文本(但不返回冒号) Here is an example of how it works with the ":" getting removed
(\ w +:)将返回以冒号结尾的任何文本(并且还将返回冒号) Here is an example of how it works with the ":" staying in
另外,如果你想了解正则表达式,Codecademy有一个很好的python course
答案 1 :(得分:1)
(\w+):
是一个正则表达式,它匹配任何以:
结尾的单词并对所有单词字符组成[a-zA-Z_]
)。
输出没有:
,因为此方法返回所有捕获的组。
结果以Python列表的形式返回。当列表表示为字符串时,元素由,
分隔。
\w
是[a-zA-Z_]
引自Python Regular Expressions Page,
\ W
如果未指定LOCALE和UNICODE标志,则匹配any 字母数字字符和下划线;这相当于 设置[a-zA-Z0-9_]。使用LOCALE,它将匹配设置[0-9_]加上 任何字符都被定义为当前的字母数字 语言环境。如果设置了UNICODE,则将匹配字符[0-9_] plus 在Unicode字符中被分类为字母数字的任何内容 属性数据库。