使用BeautifulSoup爬取网站日期和月份时遇KeyError问题求助
解决BeautifulSoup爬取日期的KeyError问题及月份爬取方法
嘿,我来帮你搞定这个问题!你的KeyError完全是因为对BeautifulSoup的用法理解有点小偏差,咱们一步步来修正:
一、修复日期爬取的KeyError
你写的a['date-day']是在尝试获取标签的date-day属性,但实际上date-day是这个<span>标签的class名称,不是它的属性。这个标签里的日期数字是作为文本内容存在的,所以正确的写法应该是获取标签的文本:
修正后的日期爬取代码:
from bs4 import BeautifulSoup soup_2 = BeautifulSoup(r.content, 'html.parser') temp_1 = soup_2.find_all('span', class_='date-day') event_day = [] for a in temp_1: # 获取标签内的文本,strip()用来去掉多余的空格换行 event_day.append(a.text.strip())
或者更简洁的列表推导式写法:
event_day = [a.text.strip() for a in soup_2.find_all('span', class_='date-day')]
二、爬取月份的正确方式
假设月份对应的HTML结构和日期类似,比如是这样的:
<span class="date-month">Oct</span>
那爬取月份的逻辑和日期完全一致,只需要把class名称换成对应的月份class即可:
示例代码:
# 爬取月份 temp_month = soup_2.find_all('span', class_='date-month') event_month = [month.text.strip() for month in temp_month]
如果月份的HTML结构有差异(比如用了其他标签或class),只需要把class_参数改成对应的名称就行,核心都是获取标签内的文本内容。
内容的提问来源于stack exchange,提问作者Hendrra
相关产品推荐
相关产品推荐

