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

如何用BeautifulSoup从超链接提取数字808?代码返回空列表求助

帮你搞定提取数字808的问题~

嘿,先看看你代码里的两个小问题:

  1. 你用soup.findAll("div", ...)找的是div标签,但目标元素明明是<a>标签呀!这就难怪返回空列表了😅
  2. 就算找到标签,你还得从文本里把括号里的数字提出来,这一步也没做呢。

修正后的实现步骤

我给你梳理下正确的操作流程:

  • 第一步:精准定位到目标<a>标签,用soup.find()或soup.findAll()找a标签,class参数填"a-link-normal feedback-detail-description"。
  • 第二步:从a标签的文本里提取括号里的数字,用正则或者字符串分割都能搞定。

代码示例(带详细注释)

import re
from bs4 import BeautifulSoup

# 假设你的HTML内容存在html变量里,比如你提供的这段:
html = '<a class="a-link-normal feedback-detail-description" href="#"><b>100% positive</b> in the last 12 months (808 ratings)</a>'
soup = BeautifulSoup(html, 'html.parser')

# 先找到目标a标签
seller_feedback_a = soup.find("a", {"class": "a-link-normal feedback-detail-description"})

if seller_feedback_a:
    # 获取a标签的纯文本内容
    feedback_text = seller_feedback_a.get_text(strip=True)
    # 用正则匹配括号里的数字 - 这种方式兼容性更强
    num_match = re.search(r'\((\d+) ratings\)', feedback_text)
    if num_match:
        target_num = num_match.group(1)
        print(target_num)  # 这里就会输出808啦
    else:
        print("没找到括号里的数字哦")
else:
    print("连目标a标签都没找到,检查下页面结构是不是变了?")

更简单的字符串分割方式(适合格式固定的情况)

如果确定文本格式不会变,也可以不用正则,直接分割字符串:

if seller_feedback_a:
    feedback_text = seller_feedback_a.get_text(strip=True)
    # 先按左括号分割,取后面的部分,再按空格分割取第一个元素
    target_num = feedback_text.split('(')[1].split(' ')[0]
    print(target_num)  # 同样输出808

补充提醒

如果页面里有多个这样的a标签,就把soup.find()换成soup.findAll(),然后循环遍历每个元素,重复上面的提取步骤就行啦。

内容的提问来源于stack exchange,提问作者Anatol Zakrividoroga

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:45:07