爬取英超球员进球数据时出现NoneType无text属性的AttributeError
爬取英超官网进球数据时的AttributeError错误解决
错误原因
你用soup.find_all('tr')抓了页面所有表格行,但不是每一行都有class为playerName的a标签(比如表头行、空行),当new_test.find(...)找不到目标元素时会返回None,直接调用.text就会触发AttributeError。去掉.text只是打印了None对象,所以没报错,但也拿不到有用的球员名字。
解决办法
办法一:先检查元素是否存在,再取文本
修改循环代码,先判断找到的标签不为空,再获取文本:
for new_test in new_tests: player_tag = new_test.find('a', class_='playerName') if player_tag: print(player_tag.text.strip())
办法二:直接定位数据行,跳过无关行
观察页面结构,真正的球员数据行一般有专属的class(比如截图里的行可能带tableData类,你可以用浏览器开发者工具确认),直接筛选这类行:
# 替换原来的find_all('tr'),只抓数据行 new_tests = soup.find_all('tr', class_='tableData') for new_test in new_tests: print(new_test.find('a', class_='playerName').text.strip())
额外提示
英超官网可能有反爬或动态加载机制,如果你用requests.get拿到的页面内容不全,后续可以试试用selenium模拟浏览器加载页面,确保能获取到完整的渲染后内容。
内容的提问来源于stack exchange,提问作者adedokun44
相关产品推荐
相关产品推荐

