使用BeautifulSoup获取日期作为日期,而不是数字

时间:2019-06-09 18:14:39

标签: python beautifulsoup

我发现了另一个问题,是在抓取网站时获取日期。

但是,当期望输出是日期时,提供的解决方案为我提供了整数表示。

Fetch date with BeautifulSoup

  

首选格式:2019年9月9日

from bs4 import BeautifulSoup

ec_editorial = requests.get("https://elcomercio.pe/opinion/editorial")

ec_editorial_scr = ec_editorial.content

data = """your html goes here""" 
soup = BeautifulSoup(ec_editorial_scr)

for i in soup.findAll('time'):
        if i.has_attr('datetime'):
            print(i['datetime'])

打印

1560076500
1559990100
1559990100

3 个答案:

答案 0 :(得分:1)

假设 1560076500 是Unix时间戳,

import datetime
time_stamp = 1559990100
converted_date = datetime.datetime.fromtimestamp(time_stamp / 1e3)
print(converted_date)
print(str(converted_date)

输出:

datetime.datetime(1970, 1, 19, 6, 49, 50, 100000)
'1970-01-19 06:49:50.100000'

答案 1 :(得分:1)

此处(您可以“播放”格式字符串以获取准确的输出)

wrapper

输出

import time
import requests
from bs4 import BeautifulSoup

ec_editorial = requests.get("https://elcomercio.pe/opinion/editorial")
soup = BeautifulSoup(ec_editorial.content, 'html.parser')
for i in soup.findAll('time'):
    if i.has_attr('datetime'):
        print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(int(i['datetime']))))

答案 2 :(得分:1)

1560076500、1559990100是纪元时间,即自1970年1月1日(UTC / GMT午夜)以来经过的秒数。

将其转换为字符串格式的最简单方法是使用Python time库。

  1. 将纪元整数值转换为localtime
>>> date = 1560076500
>>> import time
>>> date = time.localtime(date)
>>> date
time.struct_time(tm_year=2019, tm_mon=6, tm_mday=9, tm_hour=16, tm_min=5, tm_sec=0, tm_wday=6, tm_yday=160, tm_isdst=0)
  1. 使用strftime()格式化为字符串。
>>> time.strftime('%d %b %Y', date)
'09 Jun 2019'