使用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年之后抛弃一切?我花了几个小时玩一些正则表达式,但是对于我的生活似乎无法找到一个很好的例子,说明在处理字母而不是数字时如何做到这一点,或者更糟糕的是,没有涉及精确空间和范围的事情因为有时它会说“最近更新:”,有时会说“更新:”,这让我处于一个看似不寻常的地方。
答案 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, ]+)
是一个保存组,其中包含一个或多个字母数字字符(以及_
),逗号或空格。
希望有所帮助。