Python请求报错:module 'request' has no attribute 'get' 求助
解决 AttributeError: module 'request' has no attribute 'get' 及代码问题
你遇到的AttributeError核心原因是库名拼写错误——Python中常用的HTTP请求库是requests(复数形式),而不是request(单数)。单数的request是一个不相关的小模块,它根本没有get方法,所以才会抛出这个错误。
除了库名拼写,你的代码还有几个明显的逻辑问题需要修正:
- 错误调用
response.post():requests.get()返回的是一个Response对象,这个对象并没有post方法。post是requests库本身的方法,如果你需要发送POST请求,应该直接用requests.post(url),而不是从GET请求的响应里调用。 - 循环读取文件的逻辑缺陷:
while True配合readline()会无限循环,哪怕文件读完了也会一直处理空字符串,应该判断读取到的内容是否为空来终止循环,或者用更Pythonic的for line in file方式遍历文件行。 - 未处理异常情况:比如无效链接、网络错误、HTTP状态码错误(如404、500),这些都会导致程序直接崩溃,最好加上异常捕获让程序更健壮。
修正后的代码示例
假设你的需求是读取文件中的每个链接,发送GET请求并打印响应内容,修正后的代码如下:
import requests # 注意这里是复数的requests # 用with语句自动管理文件关闭,避免资源泄漏 with open("your_links_file.txt", "r") as file: for line in file: code = line.strip() # 用strip()去掉换行符和前后空白,比replace("\n", "")更可靠 if not code: # 跳过文件中的空行 continue try: # 发送GET请求 r = requests.get(code) r.raise_for_status() # 如果返回HTTP错误状态码(如404),主动抛出异常 print(r.text) # 直接打印GET请求的响应内容 except requests.exceptions.RequestException as e: # 捕获所有请求相关的异常,给出友好提示 print(f"请求链接 {code} 时出错: {e}") # 等待用户输入后继续下一个请求 input("按回车键继续下一个请求...")
如果你的实际需求是发送POST请求,只需要把requests.get(code)改成requests.post(code)即可。如果需要传递POST参数,可以添加data或json参数,比如:
requests.post(code, data={"username": "test", "password": "123"})
额外注意事项
- 确保你已经安装了
requests库:如果还没安装,在终端运行pip install requests即可。 strip()方法比replace("\n", "")更通用,它能同时处理换行符、制表符和前后多余的空格。- 异常捕获可以让程序在遇到错误时不会直接崩溃,而是清晰地告诉你哪里出了问题。
内容的提问来源于stack exchange,提问作者WierdCoderPart
相关产品推荐
相关产品推荐

