Получить дату как дату, а не как число с BeautifulSoup - PullRequest
0 голосов
/ 09 июня 2019

Я нашел этот другой вопрос для извлечения даты при отбраковке веб-сайта.

Однако предоставленное решение дает мне целочисленное представление, когда желаемым результатом является дата.

Выбор даты с BeautifulSoup

Предпочитаемый формат: 09 de julio del 2019

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 ]

1 голос
/ 09 июня 2019

Здесь (Вы можете «поиграть» со строкой формата, чтобы получить точный вывод)

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']))))

вывод

2019-06-09 13:35:00
2019-06-08 13:35:00
2019-06-08 13:35:00
2019-06-07 13:35:00
2019-06-06 13:35:00
....
1 голос
/ 09 июня 2019

1560076500, 1559990100 - это время эпохи, то есть количество секунд, прошедших с 1 января 1970 года (полночь 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'
1 голос
/ 09 июня 2019

Предполагая, 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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...