Webscraping代码在相似页面执行失败:新赛事页出现KeyError: 'href'
问题原因与解决办法
- 核心问题:新页面中你通过选择器匹配到的a标签里,存在没有href属性的标签,直接用
a_tag['href']访问不存在的属性就会抛出KeyError。哪怕页面整体结构看着相似,局部细节可能已经悄悄改变了。 - 快速修复方案:
- 替换直接取属性的方式,改用
get()方法安全获取href:# 原来的错误写法(易报错) href = a_tag['href'] # 改成安全写法,属性不存在时返回None href = a_tag.get('href') - 过滤掉无效的空链接,只保留有实际href的结果:
target_links = [] for a_tag in soup.select('你的选择器'): link = a_tag.get('href') if link: # 排除None和空字符串类型的无效链接 target_links.append(link)
- 替换直接取属性的方式,改用
- 进阶排查优化:
- 用浏览器F12开发者工具,对比新旧页面的目标a标签,看新页面的标签是否有类名、层级变化,或者href换成了
data-href这类自定义属性。 - 优化选择器,直接匹配包含href的目标标签,比如如果目标链接都带有
b-link类,就把选择器改成'a.b-link[href]',提前过滤掉无href的标签。
- 用浏览器F12开发者工具,对比新旧页面的目标a标签,看新页面的标签是否有类名、层级变化,或者href换成了
内容的提问来源于stack exchange,提问作者SS1
相关产品推荐
相关产品推荐

