① 数据请求
本文即将看到:
⚬ ------ urllib库
⚬ ------ requests库
一、urllib库(内置)
1. request模块的使用:
urlopen函数
所有和网络请求有关的方法,都被收集到 urllib.request模块下.
使用
from urllib import request
标识符 = request.urlopen(url,timeout = time) //timeout=设置超时
标识符.read() //读取 (count)读取字节数
标识符.readline() //读取一行
标识符.readlines() //读取多行
解释
url: 请求url
data: 请求的打他,如果设置这个值,那么将变成post请求
示例
# encoding:utf-8
from urllib import request
url = 'https://www.cnblogs.com/okup/p/12819388.html' //本站
res = request.urlopen(url) //urlopen发起HTTP请求
print(res.read()) //read()函数返回二进制
print(res.read().decode("utf-8")) //decode()进行解码
request.Request
修改请求头
post请求(可选)
# encoding:utf-8
from urllib import request
url = 'https://www.cnblogs.com/okup/p/12819388.html' //本站
headers(标识符) = {
"User-Agent": value ,
"Cooike": value,
"Referer": value,
} //设置请求头
data = {
} //设置data,使用post请求
方式一:
set(标识符) = request.Request(url, headers=hearders) //传入参数
htt(标识符) = request.urlopen(set) //请求
print(htt.read().decode())
方式二:
// 设置post请求
set(标识符) = request.Request(url, headers=hearders, data=data, method="POST") //data = parse.urlencode("utf-8")
htt = request.urlopen(set)
print(htt.read().decode())
代理
# encoding:utf-8
from urllib import request
url = 'https://www.cnblogs.com/okup/p/12819388.html' //本站
//设置代理
hander = request.ProxyHandler({"http": "地址:端口号"}) //设置代理地址
operate = request.build_opener(hander)
a = request.Request(url) //发送request请求
resp = operate.open(url) //使用代理访问
print(resp.read())
urlretrieve函数
将网页上的文件保存到本地
使用
from urllib import request
request.urlretrieve(url,"文件名.文件格式")
2.parse模块的使用:
urlencode函数
编码解码在parse模块下
编码
from urllib import parse
parse.urlencode()
3.robotparser模块
Robots爬虫协议
from urllib import robotparser
rp = robotparser.RobotFileParser() //设置robots.txt的链接
rp.set_url('链接/robots.txt')
rp.read() //读取robots.txt文件并进行分析
parse_qs函数
解码
from urllib import parse
parse.parse_qs()
二、requests库(推荐)
安装 pip install requests
requests支持各种请求方式: GET、POST、PUT、DELETE、HEAD、OPTION.
1.HTTP请求
常用
r1 = requests.get(url)
r2 = requests.post(url)
注意
● url里有中文则会自动转码
● post,如果传入的是str,则会直接发送出去
● 可通过json参数传递dict,会自动传唤为JSON字符串
● post可通过设置file参数上传文件
设置请求头
headers = {'...':'...'}
proxies = {'https':'...:端口号', 'http':'...'} //代理
timeout = 15(value) //超时
data ={'...':'...' }
//使用
r1 = requests.get(url, headers=headers, proxies=proxies, timeout=30)
// post请求要有data=参数
res = requests.post(url, headers=headers, proxies=proxies, timeout=30)
2.处理返回结果
字段 | 描述 |
---|---|
status_code | 获取状态码 |
reason | 状态信息 |
content | 获取byte类型的返回结果 |
json | 解析序列化为JSON格式的数据 |
text | 获取str类型的返回结果,可以在text调用前用.encode=指定编码类型 |
3.cookie设置
cookie获取
# encoding:utf-8
import requests
url = 'https://www.cnblogs.com/okup/'
re = requests.get(url)
print(re.cookies.get_dict()) //cookies获取 gte_dict()方法返回字典类型
session
//用于跨请求保持一些参数,常用于cookie
#encoding:utf-8
import requests
url = 'https://www.cnblogs.com/okup/'
sess = requests.Session()
sess.post(url)
4.处理不信任SSl
说明
现在大部分网站都采用HTTPS,不可避免会涉及一些证书问题,如果遇到一些网站自发的证书,可以添加参数 verify=False 来处理错误
示例
# encoding:utf-8
import requests
url = 'https://www.cnblogs.com/okup/'
re = requests.get(url,verify=False) //设置参数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?