requests模块----这是一个强硬的手段,有多强呢?看看你就知道了

简介: requests模块----这是一个强硬的手段,有多强呢?看看你就知道了

     开始了

requests模块简单介绍

1.requests模块作为爬⾍中最常⽤的⼀个模块,一个让爬虫小白能快速接受的模块,


可能之前看过⼀些教程的⼩可爱在想,为什么不是从urllib开始,⽽是从

requests模块开始,原因有以下⼏点

● 1.requests的底层实现就是urllib

● 2.requests在Python2和Python3通⽤,⽅法完全⼀样

● 3.requests简单易⽤

简单了解一下我们访问网页的情况

4b7cb44736d547e0bdbd75e5892657c0.png


我们是通过发送请求给服务器,然后服务器响应返回数据,而requetst就是模拟浏览器发送请求,


简单理解为:发送⽹络请求,返回相应数据


下面开始使用requests前我把我的思路以画图的形式表达出来:

a4d6d9b42dd041878c2e55f09a761c3e.png



下面我们要干事情,要先知道怎么干,第一步:


下载模块requests:


6d2fedc825344c6dbf14bc210f9acbf2.png


发送简单的get请求

下面开始我们的简单代码:


url="https://www.baidu.com/?tn=02003390_19_hao_pg"

import  requests
url="https://www.baidu.com/?tn=02003390_19_hao_pg"
header={
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36"
}
# 发送请求
response=requests.get(url)
print(response)
response.encoding="utf-8"
print(response.text)


67fdcca28764457c82001373ce32b6fb.png

32bcac31b8164617beddb2c868914e41.png



encoding是为了设计返回数据编码格式和接受的数据编码格式相一致

text是获取服务器返回数据html   类型为字符串

获取数据的还有content   json()


返回响应状态码


返回部分请求头


返回全部请求头


content 获取数据(返回字节数据)

a16d7b0ed60c47eb965c178124674921.png


content.decode()    等同于 text  返回类型为字符串

把字节转换为字符串

19ae3db6184b4c69afc408541b333a3b.png



 json()就是把json数据转换成python的数据类型

下面代码如下:

import  requests
url="https://www.woaifanyi.com/api/2.0/save/?ajaxtimestamp=1685158773961"
header={
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36"
}
data={
    "source": "你好",
    "from": "1",
    "to": "2"
}
# 发送请求
response=requests.post(url,data=data,headers=header)
print(response)
print(response.json())
print(response.request.headers)

2ad0c8a96d28477e90429f516d64f58d.png



这里用到了post(),这个和get()的大致用法相同 唯一不同的就是data参数


返回响应对应的 请求头

response.request.headers


4c9bed935ce04dec9caa3154c3645049.png

返回全部响应头

headers


2516a910525845a293ea007d9826e12b.png

发送带header的请求

可以看出上面返回的是一个部分HTML的数据,但实际却是比这个多了很多


为了防止出现这样的情况,我们可以加一个请求头


import  requests
url="https://www.baidu.com/?tn=02003390_19_hao_pg"
header={
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36"
}
# 发送请求
response=requests.get(url,headers=header)
print(response)
response.encoding="utf-8"
print(response.text)

这样就可以获取整个页面的数据,但只是获取到静态页面的数据,动态的数据靠这个却很难(后面我会发出怎么获取动态页面的数据)


发送POST请求

前面json()时候我用来post()来演示


这里不花费时间


cookies参数的使⽤

cookie可以理解为用户信息,就好比我们登录QQ时有段时间不会让我们手动登录,就是因为qq软件有我们的cookie信息


使用:可以加在header里面一起发送过去


f3762eae559444888e6bd7f1c182f01e.png


代码如下:


有些小可爱可能觉得写cookie有一点难写,这个网址可以解决    ,https://spidertools.cn/#/formatHeader


import  requests
url="http://ifanyi.iciba.com/index.php?c=trans&m=fy&client=6&auth_user=key_web_fanyi&sign=0d2d6b4f80839676"
header={
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
    "cookie":"XXXXXXXXXXX"
}
# 发送请求
response=requests.get(url,headers=header)
print(response)
response.encoding="utf-8"
# print(response.text)
# print(response.content.decode())
# print(response.status_code)
# print(response.json())


cookie和session区别

cookie数据存放在客户端的浏览器上,session数据放在服务器上。

cookie不是很安全,别⼈可以分析存放在本地的cookie并进⾏cookie欺骗

session会在⼀定时间内保存在服务器上。当访问增多,会⽐较占⽤你服务

器的性能

单个cookie保存的数据不能超过4K,很多浏览器都限制⼀个站点最多保存

20个cookie

使⽤代理

1.让服务器以为不是同⼀个客户端在请求

2.防⽌我们的真实地址被泄露,防⽌被追究

代理IP可以分为三类

1.透明代理(知道你使用代理ip,能查到ni)

2.匿名代理(知道你使用代理ip,但查不到你)

3.⾼匿代理(不知道你使用代理IP,又查不到你)

代码如下:

import  requests
url="http://ifanyi.iciba.com/index.php?c=trans&m=fy&client=6&auth_user=key_web_fanyi&sign=0d2d6b4f80839676"
header={
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
    "cookie":"XXXXXXXXXXX"
}
proxies={
    "http":"http://117.191.11.112",
    "https":"http://117.191.11.112"
}
# 发送请求
response=requests.get(url,headers=header,proxies=proxies)
print(response)
response.encoding="utf-8"


当代理IP不行时会报错:


75c0c25f07a74a328c193ecea74743d1.png


在请求的时候,代理IP请求时间太长了,有写小可爱就会烦了,所有我们可以添加一个响应时间,最多等待多久


设置请求超时时间

import  requests
url="http://ifanyi.iciba.com/index.php?c=trans&m=fy&client=6&auth_user=key_web_fanyi&sign=0d2d6b4f80839676"
header={
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
    "cookie":"XXXXXXXXXXX"
}
proxies={
    "http":"http://117.191.11.112",
    "https":"http://117.191.11.112"
}
# 发送请求
response=requests.get(url,headers=header,proxies=proxies,timeout=10)
print(response)
response.encoding="utf-8"


timeout=10  代表最多等待10秒       !    !    !    不是强行等待10秒


请求SSL证书

我们在访问某些⽹站的时候,可能会遇到这种情况,如果我们这个时候⽤

requests模块去请求的话,⼀样是得不到结果的,原因是该⽹站的CA证书没有

经过【受信任的根证书颁发机构】的认证

方法:

我们在⽤requests请求的时候加上参数

verify=False

response = requests.get('https://inv-veri.xxxx.gov.cn/',verify=False)

总结:

requests模块可以模拟浏览器访问网页,但是如果针对一些动态网页就不行了,以上是我的个人分享情况,

相关文章
|
存储 算法 安全
oss加密方式
阿里云OSS提供多种数据加密选项增强安全性:SSE-S3和SSE-KMS(服务器端加密),其中SSE-KMS支持使用KMS托管密钥;SSE-C和CSE-KMS(客户端加密)允许用户自管加密密钥,CSE-KMS结合KMS增强安全;还有SSE-OSS,完全托管的加密方式,使用AES-256并定期轮转主密钥。这些方案满足不同用户对密钥管理和数据安全的需求。
460 2
|
10月前
|
前端开发 搜索推荐 编译器
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
537 34
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
|
安全 NoSQL 关系型数据库
内网扫描器Fscan
内网扫描器Fscan
|
Kubernetes Cloud Native 前端开发
Kubernetes入门指南:从基础到实践
Kubernetes入门指南:从基础到实践
321 0
|
程序员 开发者 Python
什么是 `def` 语句?
`def` 是 Python 中定义函数的关键字,用于创建可重用代码块。函数可以有参数,如`greet_with_name(name)`,默认参数,如`greet_with_default(name="Guest")`,并能通过`return`返回值。Python函数还能返回多个值,如元组。`lambda`用于创建匿名函数,而函数本身可以作为其他函数的参数,实现函数式编程。递归函数(如`factorial(n)`)能调用自身。嵌套函数允许在函数内部定义私有函数,装饰器通过`@`符号修饰函数,扩展其功能。掌握这些概念能提升代码的模块化和效率。
792 2
|
JavaScript Java 测试技术
基于微信小程序的刷题系统的+springboot+vue.js附带文章和源代码设计说明文档ppt
基于微信小程序的刷题系统的+springboot+vue.js附带文章和源代码设计说明文档ppt
254 1
|
人工智能 搜索推荐 算法
啥是AI,认识身边的AI
人工智能,或AI,悄然融入我们的日常生活,成为不可或缺的一部分。在智能手机中,语音助手如Siri、小爱同学等,不仅帮我们完成日常操作,还能提供陪伴。AI还化身时尚摄影师,美化我们的照片;通过个性化推荐,在各类应用中呈现我们感兴趣的内容。智能家居中,智能音箱控制家电,安全摄像头守卫家庭,智能冰箱推荐健康食谱。在线上,AI优化购物体验,定制化信息流让我们享受个性化社交。在医疗领域,AI辅助诊断疾病,智能手环监测健康。出行时,AI规划最佳路线,自动驾驶预示未来。教育娱乐方面,AI定制学习计划,创造沉浸式游戏体验。AI已成为我们贴心的生活助手。
|
开发工具 git
百度搜索:蓝易云【git生成change-id的解决方法】
请注意,以上方法适用于本地仓库。如果你是在使用Gerrit进行代码审核,Gerrit会自动为每个提交生成Change-Id。如果在使用其他代码托管平台,可能需要根据平台的规范自行生成和添加Change-Id。
516 2
|
小程序 Python
分享35个微信小程序源码,总有一款适合您
分享35个微信小程序源码,总有一款适合您
1021 3
|
Web App开发 缓存 运维
CentOS命令大全:从入门到精通
CentOS命令大全:从入门到精通
1799 1