Python requests 完整使用教程(从入门到企业级用法)

📅 发布时间:2026/7/5 12:46:12 👁️ 浏览次数:
Python requests 完整使用教程(从入门到企业级用法)
requests是 Python 最常用的 HTTP 客户端库以“简单、优雅”著称。它封装了底层的urllib3让你用非常 Pythonic 的方式发送 HTTP 请求。1. 安装pip install requests2. 基本用法 GET 请求import requests url https://httpbin.org/get params {q: python, page: 1} resp requests.get(url, paramsparams) print(resp.status_code) print(resp.json())要点params会自动拼接到 URL 上resp.json()自动解析 JSON POST 请求表单data {username: doudou, password: 123456} resp requests.post(https://httpbin.org/post, datadata) print(resp.json()) POST 请求JSONpayload {name: doudou, age: 18} resp requests.post(https://httpbin.org/post, jsonpayload) print(resp.json())json会自动设置Content-Type: application/json3. 常用参数 Headersheaders { User-Agent: Mozilla/5.0, Authorization: Bearer xxx } resp requests.get(url, headersheaders) Cookiescookies {sessionid: abcd1234} resp requests.get(url, cookiescookies) 超时 timeout强烈建议生产环境必须加resp requests.get(url, timeout5)timeout5表示最多等待 5 秒不加 timeout 会导致程序卡死 禁用 SSL 证书验证不推荐resp requests.get(url, verifyFalse)4. 上传文件files { file: (test.txt, open(test.txt, rb), text/plain) } resp requests.post(https://httpbin.org/post, filesfiles) print(resp.json())5. 下载文件流式resp requests.get(url, streamTrue) with open(image.png, wb) as f: for chunk in resp.iter_content(chunk_size1024): f.write(chunk)6. Session 会话保持 Cookie、Header企业级项目中非常常用。session requests.Session() session.headers.update({User-Agent: Mozilla/5.0}) # 第一次请求会保存 cookie session.get(https://httpbin.org/cookies/set/sessionid/123456) # 第二次请求自动带 cookie resp session.get(https://httpbin.org/cookies) print(resp.json())7. 处理响应resp requests.get(url) resp.status_code # 状态码 resp.text # 文本内容 resp.content # 二进制内容 resp.json() # JSON resp.headers # 响应头 resp.cookies # Cookie8. 错误处理企业级必备import requests try: resp requests.get(url, timeout5) resp.raise_for_status() # 自动抛出 4xx/5xx 错误 except requests.exceptions.Timeout: print(请求超时) except requests.exceptions.HTTPError as e: print(HTTP 错误:, e) except requests.exceptions.RequestException as e: print(请求失败:, e)9. 代理常用于爬虫或企业内网proxies { http: http://127.0.0.1:7890, https: http://127.0.0.1:7890, } resp requests.get(url, proxiesproxies)10. 企业级最佳实践你会喜欢✔ 必须设置 timeout避免接口挂死导致线程阻塞。✔ 使用 Session 复用连接减少 TCP 握手提高性能。✔ 使用raise_for_status()自动捕获 4xx/5xx。✔ 日志记录请求与响应方便排查问题。✔ 对外部 API 做重试机制可结合urllib3.util.retry。11. 完整企业级请求封装示例import requests class HttpClient: def __init__(self, base_url): self.session requests.Session() self.base_url base_url self.session.headers.update({ User-Agent: Mozilla/5.0, Accept: application/json }) def request(self, method, path, **kwargs): url self.base_url path try: resp self.session.request(method, url, timeout5, **kwargs) resp.raise_for_status() return resp.json() except requests.exceptions.RequestException as e: print(请求失败:, e) return None client HttpClient(https://httpbin.org) print(client.request(GET, /get, params{a: 1}))这段代码可以直接用于企业项目。