用 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
那么在这个例子中,我该如何舍弃 2014 年星期五之前和之后的所有内容呢?我花了几个小时玩一些正则表达式,但在我的一生中似乎找不到一个很好的例子来说明在处理字母而不是数字时如何做到这一点,或者更糟的是,一些不处理精确空间和范围的东西因为有时它会说“上次更新:”,有时会说“更新:”,这让我处于一个看似不寻常的位置。
最佳答案
您可以使用正则表达式从字符串中提取日期,示例:
>>> 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, ]+)
是匹配 1 个或多个字母数字字符(以及 _
)、逗号或空格的保存组。
希望对您有所帮助。
关于python - 使用 Scrapy 在 Python 中选择部分文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22438801/