如何使用bs4python从HTML中提取日期和时间文本



我使用python bs4从这些HTML代码中提取日期和时间

[lt;时间类="发布日期相对日期"数据发布日期="2020-07-21T18:49:14Z"日期时间="2020:07-21T18:49/14Z"></time>,<时间等级=";公布日期相对日期";数据发布日期=";2020-07-21T18:48:26Z";日期时间=";2020-07-21T18:48:26Z">lt;/时间>,<时间等级=";公布日期相对日期";数据发布日期=";2020-07-21T18:47:00Z";日期时间=";2020-07-21T18:47:00Z">lt;/时间>,<时间等级=";公布日期相对日期";数据发布日期=";2020-07-21T18:43:21Z";日期时间=";2020-07-21T18:43:21Z">lt;/时间>]

**

想知道除了日期和时间之外,我怎么能去掉其他文本?例如,'2020-07-21T18:49:14Z'并将其显示为'2020-07-21','18:49:114Z'TR

这是我到目前为止的代码:

date_and_time=汤.find_all('time',attrs={'class':'发布日期相对日期'}(

您可以使用

soup.find(id=<ID OF TIME>)

那么你只会得到时间。如果使用find_all,您将获得与属性匹配的所有文本。

你也可以直接拆分你现在拥有的文本:

date_and_time = '2020-07-21T18:49:14Z'
print(date_and_time.split('T')
['2020-07-21', '18:49:14Z']

此脚本将创建具有timedate列的panda数据帧:

import pandas as pd
from bs4 import BeautifulSoup

html_string = '''
    <time class="published-date relative-date" data-published-date="2020-07-21T18:49:14Z" datetime="2020-07-21T18:49:14Z"></time>
'''
soup = BeautifulSoup(html_string, 'html.parser')
all_data = []
for t in soup.select('time.published-date.relative-date'):
    all_data.append(t.get('data-published-date'))
df = pd.DataFrame(all_data)
df[0] = pd.to_datetime(df[0])
df['date'] = df[0].dt.date
df['time'] = df[0].dt.time
print(df)

打印:

                          0        date      time
0 2020-07-21 18:49:14+00:00  2020-07-21  18:49:14

您可以使用dateutil来解析原始日期时间字符串。使用命令pip install python-dateutil 使用pip安装dateutil

from bs4 import BeautifulSoup
from dateutil import parser
text = '<time class="published-date relative-date" date-published-date="2020-07-21T18:49:14Z" datetime="2020-07-21T18:49:14Z">'
soup = BeautifulSoup(text)
for t in soup.find_all('time', attrs={'class':'published-date relative-date'}):
    date_time_str = t.get('datetime')
    date_time = parser.parse(date_time_str)
    print (date_time.date())
    print (date_time.time())

输出:

2020-07-21
18:49:14

最新更新