【问题标题】:BeautifulSoup: Get the time and date of a column that shows "x minutes ago"BeautifulSoup:获取显示“x 分钟前”的列的时间和日期
【发布时间】:2021-03-11 16:18:39
【问题描述】:

我正在尝试抓取该网站的一些信息:https://cryptoslam.io/nba-top-shot/sales 如您所见,在第一列“已售出”中,我获得了该行的时间和日期的一些信息。问题是在此列中,此信息以文本形式显示,例如“2 分钟前”、“x 秒前”或“六个月前”。

我想创建一个数据框,其中“已售”列显示确切的时间和日期。而不是“一分钟前”,我想得到“11-3-2021, 17:17h”或类似的东西。这可能吗?

提前致谢。

【问题讨论】:

  • 不是解析 HTML,而是查看与页面交互时的网络活动:JS 代码对服务器进行 API 调用。使用这些 API 端点获取结构化数据。
  • 如果您只看到我的答案的早期版本,请查看新版本。我找到了一个 Python 模块,可以满足您的需求。

标签: python beautifulsoup


【解决方案1】:

BeautifulSoup 不会自己为您执行此操作。它负责为您将页面上的任何内容拉出页面。它不处理任何类型的数据转换。所以你需要一个模块来解析这些字符串并将它们转换为日期/时间值。

我找到了可以为您执行此操作的模块。你可以安装它:

pip install dateparse

那么使用起来超级简单:

import dateparser
import datetime

# Display current time
now = datetime.datetime.now()
print(now)

# Display result of parsing a human-readable relative time
# to go back two hours
date = dateparser.parse('2 hours ago')
print(date)

结果:

2021-03-11 09:05:05.884789
2021-03-11 07:05:05.942474

【讨论】:

  • 非常感谢。你的解决方案很棒。现在我必须弄清楚如何解析“已售”列的所有数据,创建一个新的“时间”列,该列将“已售”的文本转换为我的数据框中的日期时间
  • 已解决。它正在使用这个:df['Date'] = df1['Sold'].apply(lambda x :dateparser.parse(x)) 再次感谢!
  • 酷豆。很高兴我能帮上忙!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-23
相关资源
最近更新 更多