2026/2/28 11:39:52
网站建设
项目流程
网站建设百度搜不到,商业网站建设案例课程下载,营销型企业网站核心,wordpress怎么批量上传文章下面是一份2026年最新视角的 Python requests 模块全面学习教程#xff0c;适合零基础到中级开发者。 内容基于 requests 2.32.5#xff08;2025年8月最新稳定版#xff0c;支持 Python 3.9#xff0c;已放弃 Python 3.8#xff09;。
目标#xff1a;学完后能熟练处理 …下面是一份2026年最新视角的Python requests 模块全面学习教程适合零基础到中级开发者。内容基于requests 2.32.52025年8月最新稳定版支持 Python 3.9已放弃 Python 3.8。目标学完后能熟练处理 95% 的 HTTP 场景包括爬虫、API 调用、文件上传、认证、超时、重试、会话保持等。1. 安装与快速验证pipinstallrequests# 推荐最新版# 或指定版本生产环境常用pipinstallrequests2.32.5验证交互式或脚本importrequestsprint(requests.__version__)# 应该看到 2.32.xrrequests.get(https://httpbin.org/get)print(r.status_code)# 200print(r.json()[url])# https://httpbin.org/get2. 核心方法一览最常用 7 个方法用途常见场景返回值类型get()获取资源查询参数、爬取页面、调用 GET APIResponsepost()提交数据创建登录、表单提交、JSON APIResponseput()更新/替换资源更新用户资料、全量替换Responsepatch()部分更新只改某个字段Responsedelete()删除资源删除文章、注销账号Responsehead()只获取响应头检查资源是否存在、大小、修改时间Responseoptions()查询服务器支持的方法CORS 预检较少用Response3. 基本使用模板强烈推荐每次都这样写importrequestsfromrequests.exceptionsimportRequestExceptiontry:responserequests.get(https://api.example.com/users,params{page:1,limit:20},# 查询参数headers{User-Agent:MyApp/1.0},timeout10,# 必加)response.raise_for_status()# 非 2xx 抛异常dataresponse.json()# 自动解析 JSONprint(data)exceptrequests.Timeout:print(请求超时)exceptrequests.ConnectionError:print(网络连接失败)exceptRequestExceptionase:print(f请求异常:{e})4. 核心属性与方法Response 对象属性/方法说明示例用法status_code状态码200, 404, 500 等okTrue 如果 status_code 400if not r.ok: …reason状态描述如 “OK”, “Not Found”text响应体unicode 字符串r.text.strip()content响应体bytes保存图片/文件用json()解析 JSON失败抛 JSONDecodeErrordata r.json()headers响应头CaseInsensitiveDictr.headers[“Content-Type”]cookies响应中的 cookiesr.cookies[“sessionid”]encoding编码可手动设置r.encoding “utf-8”raise_for_status()非 2xx 抛 HTTPError推荐在 response 后立即调用iter_content()流式读取大文件下载大文件时用5. 传递参数的 4 种常见方式# 1. 查询参数GET 最常用requests.get(https://httpbin.org/get,params{q:python,page:2})# 2. 表单数据application/x-www-form-urlencodedrequests.post(https://httpbin.org/post,data{username:admin,password:123})# 3. JSON 数据Content-Type: application/jsonrequests.post(https://httpbin.org/post,json{name:Alice,age:28})# 4. 文件上传multipart/form-datafiles{file:open(report.pdf,rb)}requests.post(https://httpbin.org/post,filesfiles)6. Headers 与 Cookies 处理# 自定义 headersheaders{User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120,Authorization:Bearer your_token_here,Accept-Language:zh-CN,zh;q0.9,}rrequests.get(url,headersheaders)# 自动管理 cookies会话内保持sessionrequests.Session()session.get(https://example.com/login,datalogin_data)rsession.get(https://example.com/profile)# 自动带上登录后的 cookie7. 超时、重试、代理生产必备# 推荐超时写法连接超时 读取超时requests.get(url,timeout(3.05,27))# 连接 3s读取 27s# 简单重试推荐用 requests.adapters urllib3fromrequests.adaptersimportHTTPAdapterfromurllib3.util.retryimportRetry sessionrequests.Session()retriesRetry(total3,backoff_factor1,status_forcelist[429,500,502,503,504])session.mount(https://,HTTPAdapter(max_retriesretries))session.mount(http://,HTTPAdapter(max_retriesretries))# 代理支持 http/https/socks5proxies{http:http://user:passproxy_ip:port,https:http://user:passproxy_ip:port,# all: socks5://127.0.0.1:1080 # 需要 pip install requests[socks]}requests.get(url,proxiesproxies)8. 会话Session — 性能与状态保持的关键sessionrequests.Session()session.headers.update({User-Agent:MyBot/1.0})session.auth(user,pass)# 基础认证session.cookies.set(theme,dark)# 连接池复用、cookie 自动保持、统一 headers/authforurlinurl_list:responsesession.get(url)9. 认证方式汇总类型代码示例场景Basic Authauth(user, pass)内网、旧系统Digest Authfrom requests.auth import HTTPDigestAuth少数 APIBearer Tokenheaders{Authorization: fBearer {token}}JWT/OAuth2 最常见API Keyparams{api_key: KEY}或 headersOpenAI、天气 API 等OAuth 1/2用 requests-oauthlibTwitter/X、部分企业10. 流式请求与大文件下载# 流式下载内存友好rrequests.get(https://example.com/bigfile.zip,streamTrue)withopen(bigfile.zip,wb)asf:forchunkinr.iter_content(chunk_size8192):ifchunk:f.write(chunk)11. 常见异常处理全家桶fromrequests.exceptionsimport(Timeout,ConnectionError,HTTPError,TooManyRedirects,RequestException)try:rrequests.get(url,timeout8)r.raise_for_status()exceptTimeout:# 重试或切换代理exceptConnectionError:# 网络问题exceptHTTPErrorase:print(fHTTP 错误:{e.response.status_code})exceptTooManyRedirects:# 无限重定向exceptRequestExceptionase:# 兜底12. 进阶推荐方向学完基础后选修异步 HTTPhttpx支持 async/awaitAPI 与 requests 几乎相同浏览器行为模拟requests fake-useragent cloudscraper防反爬重试/限流/熔断tenacity requests结构化日志structlog requests 的钩子mock 测试responses 或 httpx 的 mock快速自测清单学完后能独立完成调用带 token 的 GET API 并解析 JSONPOST JSON 数据并处理 4xx/5xx上传单个/多个文件用 Session 保持登录状态爬取多页下载大文件不爆内存设置超时 自动重试 3 次处理代理 自定义 UA如果你能全部实现恭喜你 requests 已经入门到熟练有具体场景想深入比如反爬、模拟登录、并发下载、结合 pandas 批量调用 API告诉我我给你针对性代码 注意事项。加油