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

使用BeautifulSoup获取按钮opacity属性判断爬取终止条件

解决方案

核心判断逻辑

你可以通过BeautifulSoup读取按钮元素的属性值实现终止条件判断,两种判断方式可选:

  • 最简判断:直接检查按钮是否存在style属性即可,因为未到最后一页时按钮无style属性,最后一页才会追加带opacity规则的style属性
  • 严谨判断:解析style属性的内容,确认是否包含opacity: 0规则,避免后续网站给按钮新增其他样式规则导致判断失效

代码示例

首先你需要先通过浏览器开发者工具的网络面板,抓到点击「SHOW MORE」按钮时触发的AJAX请求,确认请求参数的变化规律(比如offset、page参数的递增规则),之后按照以下逻辑写循环:

import requests
from bs4 import BeautifulSoup
import time

# 初始化请求参数,根据你抓包的结果调整
base_url = "你要爬取的接口地址"
page = 1
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"
}

while True:
    # 发请求拿页面/接口数据
    params = {"page": page} # 根据实际抓包的参数调整
    resp = requests.get(base_url, params=params, headers=headers)
    resp.encoding = "utf-8"
    soup = BeautifulSoup(resp.text, "lxml")

    # 这里写你抓取当前页数据的业务逻辑
    # ...

    # 定位SHOW MORE按钮
    show_more_btn = soup.find("a", class_="MaisArtigos")
    # 判断是否到最后一页
    if show_more_btn and show_more_btn.has_attr("style"):
        style_content = show_more_btn["style"].replace(" ", "")
        if "opacity:0" in style_content:
            # 触发终止条件,退出循环
            break
    # 没到最后一页,页码+1继续爬
    page += 1
    # 加延时避免请求频率过高被封IP
    time.sleep(2)

注意事项

  • 如果接口返回的是JSON格式而非HTML,按钮的状态可能会在JSON的某个字段里标识,不需要解析HTML也能判断终止条件
  • 如果请求后返回的HTML里没有按钮元素,可以检查是不是请求头缺了Referer、Cookie等必要参数,补充后再测试

内容的提问来源于stack exchange,提问作者Herminio Henriques

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:27:02