微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

新闻截稿日期

如何解决新闻截稿日期

我正在尝试从 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: unconverted data remains: 日期类型为 string。谢谢

解决方法

您对 May -> Mei 更改的假设是正确的,替换后您可能面临问题的原因是字符串中的尾随空格,这些空格未在您的格式中考虑在内。您可以使用 string.rstrip() 删除这些空格。

import datetime as dt

dates = "06 Mei 2021,11:32  "
dates = dates.replace("Mei","May") # The replacement will have to be handled for all months,this is only an example
dates = dates.rstrip()
date = dt.datetime.strptime(dates,"%d %B %Y,%H:%M")
print(date) # 2021-05-06 11:32:00

虽然 这确实解决了这里的问题,在 dates = dates[0:20] 之后必须像这样缩短字符串很麻烦。考虑使用正则表达式一次性获取合适的格式。

,

问题似乎只是您拥有的尾随空白,这解释了错误 ValueError: unconverted data remains: 。它抱怨无法转换剩余数据(空格)。

s = '06 Mei 2021,11:32  '.replace('Mei','May').strip()
datetime.strptime(s,'%d %B %Y,%H:%M')
# Returns datetime.datetime(2021,5,6,11,32)

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

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'),%H:%M')
print(date)

结果:

2021-05-06 11:45:00

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?