我从没有API或任何东西的网站上获取信息。我已经登录并检索HTML部件,并且我的系统找到了正确的<div>
,其中将包含我需要的信息。但是我需要删除所有非“ DD / MM / YYYY”格式的信息。因此,我需要删除此字符串中不是该格式的所有部分。这是返回的<div>
的示例:
<div id="wkDrop">
<div name="weekstarts" id="2018_29">Week 29-16/07/2018</div>
<div style="display:none" name="weekstarts" id="2018_30">Week 30-23/07/2018</div>
</div>
每周更改的部分是id =“ YYYY_WW”和Week WW-DD / MM / YYYY。因此,从上面的示例来看,我要经过两个日期:2018年7月16日和2018年7月23日。
请记住,此<div>
中可能有1到4个日期,因此我提取的时间不一定总是两周。
理想情况下,我还将每个检索到的日期打印在新行上。
有什么想法我会怎么做吗?
在此先感谢您的答复:)
答案 0 :(得分:0)
首先,您应该研究使用BeautifulSoup删除div
标签并提取数据。然后,您可以使用split("^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$")
。
`将字符串拆分为遵循正则表达式的字符串数组:
^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$
以该格式(ref)提取日期
答案 1 :(得分:0)
您可以使用正则表达式(在Python模块re
-documentation is here中)检索日期。该正则表达式的解释可以为found here。
data = """
<div id="wkDrop">
<div name="weekstarts" id="2018_29">Week 29-16/07/2018</div>
<div style="display:none" name="weekstarts" id="2018_30">Week 30-23/07/2018</div>
</div>"""
import re
for dates in re.findall(r'\d{2}/\d{2}/\d{4}', data):
print(dates)
打印:
16/07/2018
23/07/2018
答案 2 :(得分:0)
re
模块如何:
import re
str1 = '<div id="wkDrop"><div name="weekstarts" id="2018_29">Week 29-16/07/2018</div><div style="display:none" name="weekstarts" id="2018_30">Week 30-23/07/2018</div></div>'
match=re.findall('(\d+/\d+/\d+)',str1)
输出:
['16/07/2018', '23/07/2018']