Python BeautifulSoup按class选择div却返回完整网页HTML的问题求助
问题原因及解决方案
1. 语法使用错误
soup.select() 方法仅接受CSS选择器作为入参,不支持额外的class_参数。你当前的写法相当于只传入了div作为选择条件,会匹配页面所有div元素,因此输出了大量不符合预期的内容。
正确的元素匹配有两种写法:
- 沿用select方法,写完整CSS选择器:
holders = soup.select('div.n0m7sa-0.kkBhMM')
- 使用find方法指定class属性:
holders = soup.find('div', class_='n0m7sa-0 kkBhMM')
2. 目标内容为动态渲染
coinmarketcap的「Holder Statistics」模块属于JavaScript异步加载的动态内容,直接用requests请求得到的初始HTML中不存在该模块的DOM元素,就算选择器语法修正后也无法抓取到对应内容。
如果需要抓取该模块内容,你可以换成Selenium、Playwright这类支持模拟浏览器运行的工具,等页面JS加载完成后再解析内容即可。
内容的提问来源于stack exchange,提问作者MxclFhn
相关产品推荐
相关产品推荐

