使用Scrapy在Python中挑选部分文本字段

时间:2014-03-16 15:27:09

标签: python regex date web-scraping scrapy

使用Scrapy构建一个Web scraper。这是我想要提取的内容:

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    

那么在这个例子中,如何在星期五之前和2014年之后抛弃一切?我花了几个小时玩一些正则表达式,但是对于我的生活似乎无法找到一个很好的例子,说明在处理字母而不是数字时如何做到这一点,或者更糟糕的是,没有涉及精确空间和范围的事情因为有时它会说“最近更新:”,有时会说“更新:”,这让我处于一个看似不寻常的地方。

1 个答案:

答案 0 :(得分: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, ]+)是一个保存组,其中包含一个或多个字母数字字符(以及_),逗号或空格。

希望有所帮助。