You need to enable JavaScript to run this app. Python运行urllib代码报'urllib.response'无status_code属性如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Python运行urllib代码报'urllib.response'无status_code属性如何解决

错误原因

出现AttributeError是因为你对urllib库的用法理解错误:urllib.response是urllib库下的模块对象,本身没有status_code属性,status_code是HTTP请求成功后返回的响应对象的属性,你没有先发起请求就直接调用模块属性自然会报错。另外你已经导入了更易用的requests库,完全可以直接用它发起请求,不需要混用urllib。

现存代码的其他问题
  • 变量名不匹配:你代码里定义的响应对象叫response,但后面写了print(r.status_code),r变量没有定义,运行会报NameError
  • 缺少依赖导入:initialize函数里用到了pyfiglet库,但你没有导入该库,也没有提前安装
  • 核心逻辑缺失:当前URL是固定的,没有和用户名列表里的用户名拼接,无法实现批量检测
  • 函数未定义:代码里调用的count()、check()函数没有实现,运行会报错
修复方案

首先执行命令安装所需依赖:
pip install requests pyfiglet

之后替换为以下可运行的完整代码:

import datetime
import time
import requests
import pyfiglet

# 基础配置
BASE_URL = "https://ubisoftconnect.com/en-US/profile/"
AVAILABLE_FILE = "available.txt"
USERNAME_FILE = "usernames.txt"
# 加请求头避免被反爬拦截
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"
}

def count():
    # 统计待检测用户名总数
    with open(USERNAME_FILE, 'r', encoding='utf-8') as f:
        usernames = [line.strip() for line in f if line.strip()]
    return len(usernames)

def check():
    # 批量检测用户名可用性
    with open(USERNAME_FILE, 'r', encoding='utf-8') as f:
        usernames = [line.strip() for line in f if line.strip()]
    
    available_usernames = []
    for username in usernames:
        target_url = BASE_URL + username
        try:
            response = requests.get(target_url, headers=HEADERS, timeout=10)
            if response.status_code == 200:
                print(f"[+] 可用:{username}")
                available_usernames.append(username)
            elif response.status_code == 404:
                print(f"[-] 不可用:{username}")
            else:
                print(f"[?] 状态异常:{username},状态码:{response.status_code}")
        except Exception as e:
            print(f"[!] 检测{username}出错:{str(e)}")
        # 加1秒间隔避免触发反爬
        time.sleep(1)
    
    # 保存可用用户名
    with open(AVAILABLE_FILE, 'w', encoding='utf-8') as f:
        for un in available_usernames:
            f.write(un + '\n')
    print(f"\n检测完成,共找到{len(available_usernames)}个可用用户名,已保存到{AVAILABLE_FILE}")

def initialize():
    ascii_banner = pyfiglet.figlet_format("Made  By  Gxzs!!")
    print(ascii_banner)
    print(f"{count()} 个用户名待检测")
    print("按回车键开始检测")
    input("")
    check()

if __name__ == "__main__":
    initialize()
注意事项
  • 运行前需要在代码同级目录创建usernames.txt文件,每行填写一个待检测的用户名
  • 如果后续Ubisoft调整了个人主页的URL规则,需要对应修改BASE_URL的拼接逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 01:15:09