python - 使用 Scrapy 在 Python 中选择部分文本字段

标签 python regex date web-scraping scrapy

用 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/

相关文章:

python - PyQt 4 中处理事件的正确方法是什么?

python - 在 Python 中查找字符串下方(以及字符串之间)的单词

javascript - 字符串包含价格吗?

java - 正则表达式来找到这种模式?

c++ - 使用 C++ 打开动态 URL

python - 从 Qt 小部件应用程序调用 pyqt 小部件

python - 用 pandas 和 matplotlib_venn 绘制维恩图

Python云打印授权

javascript - Moment js 在警报中显示错误的日期

android - 相对时间跨度的自定义格式