You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:使用Python爬取商品评论数失败,无法获取标签内的323

解决评论数爬虫的问题

嘿,我来帮你搞定这个评论数抓取的问题!你已经找到了正确的标签product-reviews-count,只是还差一步提取标签里的内容而已,别担心,这很简单~

核心问题分析

你的代码已经定位到了包含评论数的标签,但没有对这个标签做文本内容提取操作,所以才拿不到里面的数字323。

具体解决方案

1. 提取标签内的文本内容

BeautifulSoup的标签对象有.text或.get_text()方法,可以直接获取标签包裹的文本内容。修改你的循环试试:

for reviewcnt in bsObj.findAll(attrs={'class': 'product-reviews-count'}):
    # 获取标签内的原始文本,strip()去掉多余的空格、换行符
    raw_text = reviewcnt.text.strip()
    print("原始文本:", raw_text)

这时候你应该能看到类似323或者评论(323)这样的内容。

2. 提取纯数字(如果文本带额外文字)

如果原始文本里包含非数字内容(比如“323条评论”“评论数:323”),可以用正则表达式提取里面的数字:

import re

for reviewcnt in bsObj.findAll(attrs={'class': 'product-reviews-count'}):
    raw_text = reviewcnt.text.strip()
    # 提取文本里的所有数字,取第一个匹配结果
    review_num = re.findall(r'\d+', raw_text)[0]
    print("提取到的评论数:", review_num)

3. 特殊情况:评论数在子标签里

如果product-reviews-count标签里还有嵌套的子标签(比如<span class="product-reviews-count"><span>323</span></span>),可以先定位子标签再提取文本:

for reviewcnt in bsObj.findAll(attrs={'class': 'product-reviews-count'}):
    # 直接获取子内容的文本
    review_num = reviewcnt.contents[0].text.strip()
    # 或者用find()精准找子标签
    # review_num = reviewcnt.find('span').text.strip()
    print("评论数:", review_num)

额外提示

如果上面的方法都拿不到内容,可能是评论数是动态加载的(比如页面滚动后才加载,或者通过JavaScript渲染),这种情况你可能需要用selenium这类工具模拟浏览器加载页面,但这个稍微复杂一点,如果你遇到这种情况可以再告诉我细节~

内容的提问来源于stack exchange,提问作者Jaehyun Lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 15:13:14