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

Python3+代理爬取Supreme时出现'NoneType'无'text'属性错误求助

解决Supreme UK爬取的两个核心问题:AttributeError与代理配置

一、先搞定AttributeError: 'NoneType' object has no attribute 'text'

这个错误本质是你用BeautifulSoup定位的元素根本不存在,返回了None,然后强行调用.text就触发了报错。大概率是这两个原因:

  • 你用的选择器(比如find/find_all的参数)不对,和Supreme UK页面的实际HTML结构不匹配
  • Supreme的反爬机制把你的请求识别成机器人了,返回的是空白页面或反爬验证页面,自然找不到目标元素

修复步骤:

  1. 先确认请求返回的页面内容是否正常
    在解析之前,先把响应内容打印出来排查:

    import requests
    from bs4 import BeautifulSoup
    
    url = "https://www.supremenewyork.co.uk/shop/all/accessories"
    # 先不带代理测试,看看基础请求是否能拿到正常页面
    response = requests.get(url)
    print(response.status_code)
    print(response.text[:1000])  # 打印前1000个字符快速判断
    

    如果返回403、503状态码,或者内容里有验证码/Cloudflare验证提示,那先解决反爬和代理问题;如果返回正常页面,再检查你的元素选择器。

  2. 修正元素选择器+添加非空判断
    Supreme UK的商品名称通常在<div class="name">标签里,你可以用这个选择器试试,关键是每次调用find后都做非空判断,避免None调用.text:

    soup = BeautifulSoup(response.text, "html.parser")
    items = soup.find_all("div", class_="inner-article")
    for item in items:
        name_tag = item.find("div", class_="name")
        if name_tag:
            print(name_tag.text.strip())
        else:
            print("当前商品未找到名称标签")
    

二、代理配置问题(Supreme反爬的核心难点)

Supreme的反爬非常严格,普通代理根本过不了,尤其是Cloudflare的验证。这里给你几个实用建议:

  • 用带会话保持的高匿代理:普通透明代理会被直接识别,必须用高匿代理,且用requests.Session()管理会话,保持请求一致性
  • 添加完整的模拟浏览器请求头:至少要包含User-Agent、Accept-Language、Referer这些,模拟真实用户行为:
    session = requests.Session()
     headers = {
         "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36",
         "Accept-Language": "en-GB,en-US;q=0.9,en;q=0.8",
         "Referer": "https://www.supremenewyork.co.uk/"
     }
     session.headers.update(headers)
     # 配置代理,若有认证格式为http://user:pass@ip:port
     proxies = {
         "http": "http://your-proxy-ip:port",
         "https": "http://your-proxy-ip:port"
     }
     # 用session发送请求
     response = session.get(url, proxies=proxies)
    
  • 考虑用无头浏览器绕过验证:如果代理还是搞不定Cloudflare,可以用Playwright或Selenium,它们能模拟真实浏览器交互,更容易绕过验证。比如Playwright的示例:
    from playwright.sync_api import sync_playwright
    
     with sync_playwright() as p:
         browser = p.chromium.launch(headless=True)
         page = browser.new_page()
         page.goto("https://www.supremenewyork.co.uk/shop/all/accessories")
         # 等待商品元素加载完成
         page.wait_for_selector(".inner-article")
         items = page.query_selector_all(".inner-article .name")
         for item in items:
             print(item.text_content())
         browser.close()
    

额外提醒

Supreme的网站结构经常变动,你要定期检查页面HTML结构,更新选择器。另外,频繁爬取可能导致IP被永久封禁,建议控制请求频率,添加随机延迟。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:31:56