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

Python BeautifulSoup如何获取前50个选中的checkbox值

问题修复方案

原代码存在的问题

  • 未正确获取checkbox的value属性,错误调用不存在的data[0].text逻辑,导致无法拿到目标值甚至运行报错
  • 没有实现「单页最多取前50个值」的限制逻辑
  • 写入逻辑错误,原代码会给每个匹配到的checkbox单独写一行,不符合「同页前50个用逗号分隔成一行写入」的需求
  • 未加请求头,目标站点大概率会拦截爬虫请求返回403状态码,无法正常获取页面内容

修复后可运行代码

import requests
from bs4 import BeautifulSoup

# 配置请求头模拟浏览器访问,避免被站点拦截
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
}

# 外层统一打开文件,避免重复IO操作提升效率
with open("tags.txt", "a", encoding="utf-8") as f_out, open("links.txt", "r", encoding="utf-8") as a_file:
    for line in a_file:
        stripped_line = line.strip()
        # 跳过links.txt里的空行
        if not stripped_line:
            continue
        # 发起页面请求
        resp = requests.get(stripped_line, headers=headers)
        resp.encoding = "utf-8"
        soup = BeautifulSoup(resp.text, "html.parser")
        # 提取选中的checkbox的value值,最多取50个
        value_list = []
        for inp in soup.select('div.col-md-2 > input[checked=""]'):
            current_val = inp.get("value", "").strip()
            if current_val:
                value_list.append(current_val)
            if len(value_list) >= 50:
                break
        # 拼接成逗号分隔字符串写入文件
        if value_list:
            f_out.write(",".join(value_list) + "\n")

代码调整说明

  • 新增浏览器UA请求头,解决站点反爬拦截问题
  • 正确提取每个checkbox的value属性值,过滤空值
  • 新增提取数量限制,满50个自动停止当前页面的提取逻辑
  • 优化文件IO逻辑,统一在最外层打开读写文件,减少重复打开关闭的性能消耗
  • 新增空行跳过逻辑,避免links.txt里的空行导致请求报错

内容的提问来源于stack exchange,提问作者Katherine Elizabeth Kath

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:15:01