Python爬虫requests库实战:从基础安装到Session会话管理

苏见山
苏见山
发布时间:2026-10-13| 4人浏览过
原创

本文详细讲解Python中requests库的多种实用技巧。内容涵盖库的安装、GET与POST请求的参数及头部设置、代理IP的配置方法,以及通过获取Cookie和使用Session对象实现自动登录和状态保持。适合希望提升爬虫效率与稳定性的开发者参考。

requests库安装与环境准备

在开始使用requests库进行网络请求之前,首先需要确保环境中已正确安装该模块。

通过命令行执行pip install requests即可完成下载与安装,这是使用requests库的第一步。


#requests模块

import requests

#发送请求 content:以二进制的形式获取网页的内容
response=requests.get("http://www.baidu.com").content.decode()
#response=requests.request("get","http://www.baidu.com").content.decode()

print(response)

GET与POST请求的参数及头部设置

在发送HTTP请求时,通常需要自定义请求头(Headers)以模拟浏览器行为,并传递必要的查询参数。


import requests

url="http://www.baidu.com/s?"

headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) \
AppleWebKit/537.36 (KHTML, like Gecko) \
Chrome/81.0.4044.138 Safari/537.36"
}
wd={"wd":"中国"}
response=requests.get(url,params=wd,headers=headers)
# 返回一个字符串形式的数据
data=response.text
# 返回一个二进制形式的数据
data2=response.content
print(data2.decode())

POST请求常用于向服务器提交数据,例如表单提交或API数据上传,需正确构造请求体。

GET请求是获取资源最常用的方式,通过get()方法并配合params参数可以灵活构建查询字符串。

对于需要提交数据的场景,post()方法允许将数据以表单或JSON形式发送给服务器。


import requests
import re

#构造请求头信息
header={
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) \
AppleWebKit/537.36 (KHTML, like Gecko) \
Chrome/81.0.4044.122 Safari/537.36"
}#谷歌浏览器

#http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule 网页上的url
url="http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"

key="靓仔"

#发送到web服务器的表单数据
formdata={
"i":key,
"from":"AUTO",
"to":"AUTO",
"smartresult":"dict",
"client":"fanyideskweb",
"salt":"15880563488791",
"sign":"cc2c40d740538fc5edc0380891faef27",
"ts":"1588053583943",
"bv":"f9c86b1fdf2f53c1fefaef343285247b",
"doctype":"json",
"version":"2.1",
"keyfrom":"fanyi.web",
"action":"FY_BY_REALTlME"

}

response=requests.post(url,headers=header,data=formdata)

# 获取到的是json数据
# 对应的是字典
# print(response.json())

pat=r'"tgt":"(.*?)"}]]' #字符串中有"",再用''括起来表示字符串

# 获取到的是字符串
result=re.findall(pat,response.text)

print(result[0])

代理IP配置与响应处理

当目标网站对IP有频率限制或地域限制时,配置代理IP可以有效绕过封锁,提高抓取成功率。


import requests

#设置ip地址
#proxy={"http":"http://代理ip地址:端口号"}
#可以设置多个
proxy={
"http":"http://222.82.130.23:8060",
"http":"http://101.248.64.68:80",
}

response=requests.get("http://www.baidu.com",proxies=proxy)

print(response.content.decode())

Cookie获取与Session会话管理

服务器响应中可能包含Cookie信息,获取这些Cookie有助于后续请求的身份验证或状态保持。

Cookie通常用于存储用户会话信息,正确解析和保存Cookie是模拟用户登录的关键步骤。


import requests
response=requests.get("http://www.baidu.com")
#1.获取返回的cooketjar对象
cookiejar=response.cookies
#2.将cookiejar转换成字典
cookiedict=requests.utils.dict_from_cookiejar(cookiejar)
print(cookiedict)

使用Session对象可以自动管理Cookie,相比手动处理Cookie,它能更便捷地维持登录状态。

通过Session发起请求时,服务器返回的新Cookie会自动被保存并在后续请求中发送,避免了Cookie失效导致的登录状态丢失问题。


#使用session实现登陆

import requests

#构造请求头信息
header={
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) \
AppleWebKit/537.36 (KHTML, like Gecko) \
Chrome/81.0.4044.122 Safari/537.36"
}#谷歌浏览器

#创建session对象
ses=requests.session()

#构造登陆需要的参数
data={"email":"325*****@qq.com","password":"123321a"}

#通过传递用户名密码得到cookie信息
ses.post("http://www.renren.com/PLogin.do",data=data,headers=header)

#请求需要的页面,每次请求会带入cookie信息
response=ses.get("http://www.renren.com/880151247/profile")

print(response.text)

掌握上述requests库的核心用法,能够帮助开发者更高效地处理复杂的网络请求任务,建议结合实例多加练习。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。