使用Scrapy在Python中提取文本字段的一部分
我用Scrapy做了一个网页抓取工具。现在我想提取一些内容:
Friday March 14, 2014
当我用这个方法抓取这个div里的内容时(里面没有段落标签或者其他我能更具体定位的东西):
item['published'] = hxs.select('//div[@class="date"]/text()').extract()
结果是这样的:
\n \n Last Updated: Friday, March 14, 2014 \n ", "\n ", "\n \n ", "\n ", "\n", " \n
那么在这个例子中,我该怎么去掉“Friday”之前和“2014”之后的所有内容呢?我花了好几个小时在尝试一些正则表达式,但就是找不到一个合适的例子来处理字母而不是数字,或者更糟的是,有些内容并没有固定的空格和范围,因为有时候它写的是“Last Updated:”而有时候是“Updated:”,这让我感觉很困惑。
1 个回答
4
你可以用正则表达式从字符串中提取日期,举个例子:
>>> import re
>>> s = '\n \n Last Updated: Friday, March 14, 2014 \n ", "\n '
>>> re.search('Updated: ([\w, ]+)', s).group(1).strip()
'Friday, March 14, 2014'
这里的 ([\w, ]+)
是一个捕获组,它可以匹配一个或多个字母、数字(还有 _
)、逗号或者空格。
希望这能帮到你。