相同BeautifulSoup爬虫代码Colab正常,本地运行报AttributeError的原因咨询
问题原因分析
出现AttributeError: 'NoneType' object has no attribute 'text'的核心是代码中soup.find()未找到目标元素,返回了None,后续调用.text触发报错。具体原因可分为以下几点:
请求头触发反爬拦截
本地使用requests.get()发起请求时,默认请求头(如User-Agent)会被CoinMarketCap的反爬机制识别为非浏览器请求,网站返回的是拦截页面(如人机验证页、空内容页),而非正常的币种详情页。而Colab服务器的请求头被网站判定为合法访问,因此能获取完整页面内容。页面元素依赖JavaScript动态渲染
CoinMarketCap的部分页面内容是通过JavaScript动态加载的,requests仅能获取静态HTML源码,无法执行JS渲染动态内容。若Colab运行时网站的静态源码仍包含目标元素,而本地请求时静态源码已移除这些元素(完全依赖JS加载),就会导致find()查找失败。动态类名已更新
代码中依赖的类名(如sc-aef7b723-0 dDQUel priceTitle)是前端框架动态生成的哈希类名,这类名称会随网站版本迭代更新。你在Colab编写代码时的类名已失效,本地运行时网站已更换新类名,因此无法匹配到目标元素。
内容的提问来源于stack exchange,提问作者Jack Rodgers
相关产品推荐
相关产品推荐

