我使用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']
此脚本将创建具有time
和date
列的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