① 数据请求

本文即将看到:

⚬ ------ 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) //设置参数
posted @   Gonfei  阅读(205)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· .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 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示