当前位置: 首页> 健康> 美食 > 手表之家_上海企业一户式查询_如何做个人网站_近几天的新闻摘抄

手表之家_上海企业一户式查询_如何做个人网站_近几天的新闻摘抄

时间:2025/8/27 16:34:53来源:https://blog.csdn.net/bo_mask/article/details/146495550 浏览次数:0次
手表之家_上海企业一户式查询_如何做个人网站_近几天的新闻摘抄

遵守网站的爬虫规则、避免爬取敏感信息、保护个人隐私!

一、环境配置与基础验证

# 验证 Python 版本(需 ≥3.8)
import sys
print(sys.version)  # 应输出类似 3.8.12 的信息# 安装 requests 库(若未安装)
# 命令行执行:pip install requests# 基础请求验证
import requests
response = requests.get("https://httpbin.org/get")
print("状态码:", response.status_code)  # 成功返回 200

二、HTTP 请求全流程解析

1. GET 请求原理与实现

# GET 请求参数传递
import requestsparams = {"category": "books", "page": 2}
response = requests.get("https://httpbin.org/get",params=params,headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36","Referer": "https://www.example.com"}
)
print("最终请求 URL:", response.url)  # 显示自动拼接的完整 URL# 响应内容解析
print("响应头:", response.headers)
print("JSON 数据:", response.json()["args"])  # 获取查询参数

原理说明

  • GET 请求将参数附加在 URL 后面,通过 ?key1=value1&key2=value2 形式传递
  • headers 参数用于伪装浏览器,避免被反爬机制拦截

2. POST 请求原理与实现

# 表单数据提交
import requestsform_data = {"username": "test_user", "password": "p@ssw0rd"}
response = requests.post("https://httpbin.org/post",data=form_data,headers={"Content-Type": "application/x-www-form-urlencoded"}
)
print("表单响应:", response.json()["form"])# JSON 数据提交
json_data = {"title": "Python 教程", "views": 1500}
response = requests.post("https://httpbin.org/post",json=json_data,headers={"Content-Type": "application/json"}
)
print("JSON 响应:", response.json()["json"])

原理说明

  • POST 请求通过请求体传递数据,需显式设置 Content-Type
  • json= 参数会自动序列化字典并设置正确头信息

response 的核心属性

# 文本形式
print("文本形式:", response.text)  # 返回文本形式# 解析JSON格式响应
print("JSON格式响应:", response.json())  # 解析JSON格式响应# 状态码(HTTP协议标准代码)
print("状态码:", response.status_code)  # 200表示成功 # 响应头(HTTP头信息)
print("响应头:", response.headers)  # 包含Content-Type、Server等信息  # 编码格式(自动检测或手动设置)
print("编码:", response.encoding)  # 默认为'utf-8',可通过response.encoding = 'gbk'修改 # 原始响应内容(二进制形式)
print("原始内容:", response.content[:100])  # 前100字节  # 请求URL(可能因重定向改变)
print("实际请求URL:", response.url)  # 包含重定向后的最终地址 

三、Cookie 全场景管理

1. 手动设置 Cookie

import requests# 通过字典直接设置
cookies = {"session_id": "a1B2c3D4", "user_token": "x9y8z7"}
response = requests.get("https://httpbin.org/cookies",cookies=cookies
)
print("服务器收到的 Cookie:", response.json()["cookies"])# 使用 RequestsCookieJar 精确控制
from requests.cookies import RequestsCookieJarjar = RequestsCookieJar()
jar.set("tracking", "t1", domain=".example.com", path="/api")
response = requests.get("https://httpbin.org/cookies", cookies=jar)
print("精确控制的 Cookie:", response.json())

关键点

  • domainpath 参数需与目标网站匹配
  • RequestsCookieJar 支持复杂 Cookie 操作(如过期时间设置)

2. 会话级 Cookie 管理

# 使用 Session 对象自动管理
import requestswith requests.Session() as s:# 首次登录设置 Cookielogin_data = {"user": "admin", "pass": "admin123"}s.post("https://httpbin.org/post", data=login_data)# 后续请求自动携带 Cookieresponse = s.get("https://httpbin.org/cookies")print("会话 Cookie:", response.json())

优势

  • 自动复用 TCP 连接,提升请求效率
  • 跨请求保持 Cookies 和 Headers

四、高级特性

1. 智能重试机制

import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry# 配置重试策略
retry = Retry(total=3,backoff_factor=0.5,status_forcelist=[500, 502, 503, 504]
)# 创建带重试的会话
session = requests.Session()
session.mount("https://", HTTPAdapter(max_retries=retry))try:response = session.get("https://httpbin.org/delay/5",  # 模拟慢速响应timeout=3  # 超时设置(秒))
except requests.exceptions.Timeout:print("请求超时,已重试 3 次")

参数说明

  • backoff_factor 控制重试间隔时间(如 0.5 秒→1秒→2秒)
  • status_forcelist 指定需要重试的 HTTP 状态码

2. 大文件流式下载

# 下载网络图片(避免内存溢出)
import requestsimage_url = "https://httpbin.org/image/png"
response = requests.get(image_url, stream=True)with open("demo_image.png", "wb") as f:for chunk in response.iter_content(chunk_size=1024):if chunk:f.write(chunk)
print("图片下载完成,文件大小:", len(response.content), "字节")

技术要点

  • stream=True 启用流式传输
  • iter_content() 分块读取响应内容

五、爬虫注意:数据隐私保护

遵守网站的爬虫规则、避免爬取敏感信息、保护个人隐私!

关键字:手表之家_上海企业一户式查询_如何做个人网站_近几天的新闻摘抄

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: