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
相关产品推荐
相关产品推荐

