[Web自动化] 爬虫之网络请求

9.4 爬虫之网络请求

9.4.1 使用requests库发送HTTP请求

requests库提供了丰富的功能来发送HTTP请求,并处理响应。以下是一些额外的示例和说明。
发送带参数的GET请求

如果你需要向服务器发送查询参数,可以将它们作为字典传递给params参数。

python 复制代码
import requests

params = {'key1': 'value1', 'key2': 'value2'}
response = requests.get('http://httpbin.org/get', params=params)
print(response.url)# 输出将包含查询参数:http://httpbin.org/get?key1=value1&key2=value2

发送POST请求

POST请求通常用于向服务器提交数据。你可以将数据作为字典传递给data参数(对于表单数据)或作为字节串传递给json参数(对于JSON数据)。

python 复制代码
import requests

# 发送表单数据
data = {'key': 'value'}
response = requests.post('http://httpbin.org/post', data=data)

# 发送JSON数据
json_data = {'key': 'value'}
response = requests.post('http://httpbin.org/post', json=json_data)

设置请求头

你可以通过headers参数自定义请求头,这对于模拟不同的浏览器或绕过某些服务器的检查非常有用。

python 复制代码
import requests

url = 'http://example.com'
headers = {
 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
 'Accept-Language': 'en-US,en;q=0.5',
 'DNT': '1',# Do Not Track header
 'Connection': 'keep-alive'
}

response = requests.get(url, headers=headers)

处理响应

一旦你发送了请求,requests库将返回一个Response对象。你可以使用这个对象来访问响应的内容、状态码、头部等信息。

python 复制代码
response = requests.get(url)

# 访问响应内容
print(response.text)# 文本内容
print(response.content)# 原始内容(字节串)

# 访问状态码
print(response.status_code)

# 访问响应头
print(response.headers)

# 检查请求是否成功
if response.status_code == 200:
 print("请求成功!")
else:
 print("请求失败,状态码:", response.status_code)

会话(Session)对象

如果你需要向同一个服务器发送多个请求,并且希望保持某些参数(如Cookies)在请求之间持久化,可以使用requests.Session()对象。

python 复制代码
import requests

Session = requests.Session()

# 发送第一个请求,设置Cookies
response = Session.get('http://httpbin.org/Cookies/set/SessionCookie/123456789')

# 发送第二个请求,自动携带之前的Cookies
response = Session.get('http://httpbin.org/Cookies')
print(response.text)# 输出将包含'SessionCookie: 123456789'
相关推荐
Csvn14 小时前
🌟 LangChain 30 天保姆级教程 · Day 13|OutputParser 进阶!让 AI 输出自动转为结构化对象,并支持自动重试!
python·langchain
于慨14 小时前
Lambda 表达式、方法引用(Method Reference)语法
java·前端·servlet
石小石Orz14 小时前
油猴脚本实现生产环境加载本地qiankun子应用
前端·架构
从前慢丶14 小时前
前端交互规范(Web 端)
前端
CHU72903514 小时前
便捷约玩,沉浸推理:线上剧本杀APP功能版块设计详解
前端·小程序
GISer_Jing14 小时前
Page-agent MCP结构
前端·人工智能
王霸天14 小时前
💥别再抄网上的Scale缩放代码了!50行源码教你写一个永不翻车的大屏适配
前端·vue.js·数据可视化
小领航14 小时前
用 Three.js + Vue 3 打造炫酷的 3D 行政地图可视化组件
前端·github
@大迁世界14 小时前
2026年React大洗牌:React Hooks 将迎来重大升级
前端·javascript·react.js·前端框架·ecmascript
cch891814 小时前
Python主流框架全解析
开发语言·python