Python 新闻截稿日期

Python 新闻截稿日期,python,python-3.x,web-scraping,google-news,python-newspaper,Python,Python 3.x,Web Scraping,Google News,Python Newspaper,我正在尝试从https://finansial.bisnis.com/read/20210506/90/1391096/laba-bank-mega-tumbuh-dua-digit-kuartal-i-2021-ini-penopangnya。我正在努力抓取新闻的日期,以下是我的代码: news['tanggal'] = newsScrape['date'] dates = [] for x in news['tanggal']: x = listToString(x) x =

我正在尝试从
https://finansial.bisnis.com/read/20210506/90/1391096/laba-bank-mega-tumbuh-dua-digit-kuartal-i-2021-ini-penopangnya
。我正在努力抓取新闻的日期,以下是我的代码:

news['tanggal'] = newsScrape['date']
dates = []
for x in news['tanggal']:
    x = listToString(x)
    x = x.strip()
    x = x.replace('\r', '').replace('\n', '').replace(' \xa0|\xa0', ',').replace('|', ', ')
    dates.append(x)
dates = listToString(dates)
dates = dates[0:20]
if len(dates) == 0:
    continue
news['tanggal'] = dt.datetime.strptime(dates, '%d %B %Y, %H:%M')
但我有一个错误:

ValueError: time data '06 Mei 2021, 11:32  ' does not match format '%d %B %Y, %H:%M'

我的假设是因为
Mei
是印度尼西亚语,同时格式需要
May
是英语。如何将
Mei
更改为
May
?我尝试过
dates=dates.replace('Mei'、'May')
,但对我不起作用。当我尝试它时,我得到了错误
ValueError:未转换的数据仍然存在:
日期的类型是
string
。谢谢

您关于May->Mei更改的假设是正确的,替换后您可能会遇到问题的原因是字符串中的尾随空格,而在您的格式中没有考虑这些空格。您可以使用
string.rstrip()
删除这些空格

将日期时间导入为dt
dates=“2021年5月6日,11:32”
日期=日期。更换(“Mei”、“May”)#更换将在所有月份进行,这只是一个示例
dates=dates.rstrip()
日期=dt.datetime.strtime(日期,“%d%B%Y,%H:%M”)
打印(日期)#2021-05-06 11:32:00

这确实解决了这里的问题,在
dates=dates[0:20]
之后必须这样缩短字符串是很麻烦的。考虑使用ReGEX一次获得适当的格式。

< P>问题似乎是你所拥有的尾随空白,它解释了错误<代码> ValueError:未转换的数据仍然是:< /代码>。它抱怨无法转换剩余的数据(空白)

此外,要将所有印尼月份转换为英语,您可以使用字典:

id_en_dict = {
    ...,
    'Mei': 'May',
    ...
}

您可以尝试以下方法

import datetime as dt
import requests
from bs4 import BeautifulSoup
import urllib.request

url="https://finansial.bisnis.com/read/20210506/90/1391096/laba-bank-mega-tumbuh-dua-digit-kuartal-i-2021-ini-penopangnya"
r = requests.get(url, verify=False)
soup = BeautifulSoup(r.content, 'html.parser')
info_soup= soup.find(class_="new-description")
x=info_soup.find('span').get_text(strip=True)
x = x.strip()
x = x.replace('\r', '').replace('\n', '').replace(' \xa0|\xa0', ',').replace('|', ', ')
x = x[0:20]
x = x.rstrip()
date= dt.datetime.strptime(x.replace('Mei', 'May'), '%d %B %Y, %H:%M')
print(date)
结果:

2021-05-06 11:45:00

尝试
dates=dates.replace('Mei','May')
时出现了什么错误。还有,
日期的类型是什么?@Daren我有疑问,如果我想更改其他月份,还有其他方法吗?因为它需要努力来替换12个月,所以如果我想换另一个月的话,还有别的方法吗?因为它需要努力来取代12个月,所以你可以使用某种翻译,但那将是过分的。首先,你可以写一本{“Mei”:“May”,…}形式的字典。如果您知道月份始终使用这种语言,则可以将月份作为month=dates.split()[1]进行选择,并使用它从字典中获取一对,然后执行替换,即dates.replace(month,translations[month])。如果没有,您可以简单地在字典中循环并为每一对应用replace(key,value)。你选择硬编码翻译的方式是必须的。如果我想换另一个月的话,还有其他方式吗?因为它需要努力更换12个月
2021-05-06 11:45:00