使用BeautifulSoup如何提取网页日期文本并存入pandas DataFrame?
实现步骤
你要完成的操作分为两步:先定位提取目标日期,再把日期写入已生成的DataFrame。
第一步:提取日期字符串
你已经定位到了id="col-content"的节点,该站的赛事日期默认都存在这个节点下的.date类标签中,在现有代码的content = cont.find('div', {'id': 'col-content'})行之后添加如下代码:
# 定位日期标签 date_tag = content.find('p', class_='date') # 提取日期文本,找不到的话可以根据你截图的实际元素属性调整选择器 if date_tag: target_date = date_tag.text.strip() else: # 如果你确认当前页的固定日期就是17 May 2021可以直接赋值 target_date = "17 May 2021"
第二步:把日期写入DataFrame
你已经通过pd.read_html拿到了当前页的赛事表df,直接给df新增一列填充日期即可:
# 所有行的日期都统一为当前页的赛事日期 df['match_date'] = target_date # 如果需要把日期存入你定义的GameData实例,也可以同步添加 game_data = GameData() game_data.date.append(target_date)
补充说明
- 如果需要后续做日期运算,可以转成pandas标准日期格式:
df['match_date'] = pd.to_datetime(df['match_date'], format='%d %b %Y') - 如果你是循环爬取多日的赛事页,要确保每页提取的日期和当前页匹配,避免全局赋值错误
- 最后在
parse_data函数末尾加上return df即可在外部拿到带日期列的DataFrame
内容的提问来源于stack exchange,提问作者PyNoob
相关产品推荐
相关产品推荐

