首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将日期和时间从抓取的文本转换为日期时间格式

将日期和时间从抓取的文本转换为日期时间格式
EN

Stack Overflow用户
提问于 2014-03-16 03:44:40
回答 3查看 2.5K关注 0票数 0

我正在使用Python和Scrapy制作一个新闻聚合器,但找不到我想要做的事情的答案。

我正在从一篇文章中抓取一行文本,一个发布时间,如下所示:

代码语言:javascript
运行
复制
item['published'] = hxs.select('//div[@class="date"]/text()').extract()

这是我得到的(网站上没有ISO日期,因为我在这个项目中收集了一些其他的日期):

代码语言:javascript
运行
复制
Last Updated: Tuesday, March 11, 2014

我需要将这些日期和时间转换成一种格式,这样我也可以转换其他来源的发布时间,这样我以后就可以通过JSON提要中的那个键按时间顺序对它们进行排序。

那么,对于这种格式的日期,我如何将其转换为可用的格式?最后,我希望将所有ISO日期和那些写出的文本格式转换为下面这样的格式:

代码语言:javascript
运行
复制
Published: 2:15 p.m., March 15, 2014.
EN

回答 3

Stack Overflow用户

发布于 2014-03-16 04:15:56

我认为你想使用dateutil.parser.parse。这是the documentation。它可以处理各种格式。在debian风格的OSes上,可以在python-dateutil包中找到它。

如果这个答案不能完全回答你的问题,请发表评论,我会尝试适当地更新它。

票数 2
EN

Stack Overflow用户

发布于 2014-03-16 04:34:44

编辑:jrennie上面的解决方案比我的要干净得多。

这是可行的。我使用strptime是为了得到一个解决方案。注意,由于原始字符串中没有hh:mm数据,因此我不能像您在示例中那样输出任何hh:mm数据。

分步解决方案:

代码语言:javascript
运行
复制
>>> import time
>>> t = "Last Updated: Tuesday, March 11, 2014"
>>> t = t.rsplit(' ',4)[1:5] # Get a list of the relevant date fields
['Tuesday,', 'March', '11,', '2014']
>>> t = ' '.join(t) # Turn t into a string so we can use strptime
'Tuesday, March 11, 2014'
>>> t = time.strptime(t, "%A, %B %d, %Y") # Use strptime
time.struct_time(tm_year=2014, tm_mon=3, tm_mday=11, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=70, tm_isdst=-1)

一个线条:

代码语言:javascript
运行
复制
import time

t = "Last Updated: Tuesday, March 11, 2014"
time.strptime(' '.join(t.rsplit(' ',4)[1:5]), "%A, %B %d, %Y")

这会产生一个struct_time。您可能最终想要convert these to datetimes,这取决于您希望如何操作它们。

票数 2
EN

Stack Overflow用户

发布于 2020-10-15 15:36:22

现在,要做到这一点,一个很好的方法是使用scrapy团队的dateparser项目:https://github.com/scrapinghub/dateparser

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22428852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档