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

Posted

技术标签:

【中文标题】使用 Scrapy 在 Python 中选择部分文本字段【英文标题】:Pick out part of text field in Python with Scrapy 【发布时间】:2014-04-21 17:44:53 【问题描述】:

用 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 年之后的所有内容?我花了几个小时玩一些正则表达式,但在我的生活中似乎找不到一个很好的例子来说明如何在处理字母而不是数字时做到这一点,或者更糟糕的是,一些不能处理精确空格和范围的东西因为有时它说“上次更新:”,有时它说“更新:”,这让我处于一个看似不寻常的地方。

【问题讨论】:

【参考方案1】:

您可以使用正则表达式从字符串中提取日期,例如:

>>> 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 个或多个字母数字字符(以及_)、逗号或空格的保存组。

希望对您有所帮助。

【讨论】:

我可能做错了,因为我收到了这个错误:re.search('Updated: ([\w, ]+)', s).group(0).strip( ) 文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/re.py”,第 142 行,在搜索中返回 _compile(pattern, flags).search(string) exceptions.TypeError:预期的字符串或缓冲区这是我在蜘蛛中尝试做的事情: firstDate = hxs.select('//div[@class="date"]/text()').extract() s = firstDate re.search ('更新:([\w, ]+)', s).group(0).strip() item['published'] = s return item @Chris,您可能从extract() 电话中获得了一份清单。检查firstDate 的类型,如果是列表,则从中取出第一项:firstDate = hxs.select('//div[@class="date"]/text()').extract()[0] 你也可以使用.re()方法和SelectorList:item['published'] = hxs.select('//div[@class="date"]/text()').re(r"Updated: ([\w, ]+)") @pault,这对我有用。我对此的最后一个问题是如何调整该表达式以包括上午/下午,因为其中一些日期包括在最后。现在它正在抓取类似“2014 年 3 月 15 日 5”之类的内容,并省略了我想包含的最后一个“:15 pm”。非常感谢您的帮助,因为我被困在这几天了。 @Chris,只允许 : 字符:item['published'] = hxs.select('//div[@class="date"]/text()').re(r"Updated: ([\w, :]+)")

以上是关于使用 Scrapy 在 Python 中选择部分文本字段的主要内容,如果未能解决你的问题,请参考以下文章

Python爬虫之Scrapy框架系列(10)——Scrapy选择器selector

Python爬虫之Scrapy框架系列(10)——Scrapy选择器selector

Python爬虫从入门到放弃(十四)之 Scrapy框架中选择器的用法

Python爬虫从入门到放弃(十四)之 Scrapy框架中选择器的用法

CSDN热榜华为云博客都可用来练习Python scrapy 爬虫

CSDN热榜华为云博客都可用来练习Python scrapy 爬虫