Python网络请求库Requests,妈妈再也不会担心我的网络请求了(二)
本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 极客导航 即可关注,每个工作日都有文章更新。
一、概况
接着上篇说,如果你真以为Requests
网络请求库只有Get请求和Post请求,那就大错特错了。它还一些其他用法,也是爬虫经常需要的,我们一起来看看吧。
二、使用
- Auth验证
不知道小伙伴配置过刚买的路由器没有,刚配置的要进入后台一般都需要浏览器的Auth验证,需要输入用户名和密码,它的原理就是将用户名:密码base64加密后放在http的请求头部
,然后发送给后台进行验证。我们的Requests
也必然支持这种操作,不过用的相对较少。
import requestsauth=('admin', 'admin')response = requests.get('http://192.168.1.1', auth = auth
)
print (response.text)
复制代码
- 代理
使用http或https代理,可能是我们解决反爬比较重要的一个环节。代理是什么?看图:
当我们的IP被封时,我们往往会采用代理。相当于我喜欢一个女孩,但是她把我拉入黑名单了,这个时候往往会找她的闺蜜进行操作,我要把对女孩说的话跟她闺蜜说,然后让闺蜜转交给她。闺蜜在把她对我说的话返回给我。如果这个闺蜜也被她拉入黑名单,我们在换一个她的闺蜜。理论上一般我们都会采用闺蜜池,也就是我们所说的IP代理池。需要钱呀!!!!
import requests# 根据协议类型,选择不同的代理
proxies = {"http": "http://12.34.56.79:9527","https": "http://12.34.56.79:9527",
}response = requests.get("http://www.baidu.com", proxies = proxies
)
print(response.text)
复制代码
私密代理:
import requests# 如果代理需要使用HTTP Basic Auth,可以使用下面这种格式:
proxy = { "http": "name:pwd@22.148.133.120:11163"
}response = requests.get("http://www.baidu.com",proxies = proxy
)print (response.text)
复制代码
目前市场有很多免费代理和付费代理。比如西次代理、快代理等~
- Cookies
使用python的requests开发爬虫类程序时,经常需要将之前请求返回的set-cookie值,作为下一个请求的cookie发送。比如模拟登录之后的返回的sessionId,就需要作为后续请求的cookie参数。
import requestsresponse = requests.get("http://www.baidu.com/")# 返回CookieJar对象:
cookiejar = response.cookies#打印cookiejar
print (cookiejar)#下一次访问带上 上一次的cookies
response = requests.get("http://www.baidu.com/", cookies=cookie_jar)#打印响应内容
print (response.text)
复制代码
- Session
在 requests
里,session是一个比较强大的对象,这个对象代表一次用户会话:从客户端浏览器连接服务器开始,到客户端浏览器与服务器断开, 会话能让我们在跨请求时候保持某些参数。比如在同一个 Session 实例发出的所有请求之间保持 cookie 。
import requests# 创建session对象,可以保存Cookie值
session = requests.session()# 添加请求头
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"
}# post参数
data = {"email":"xxxx","password":"xxxx"
}# 发送附带用户名和密码的请求,并获取登录后的Cookie值,保存在session里
session.post("http://www.jikedaohang.com/login",data = data
)# session包含用户登录后的Cookie值,可以直接访问那些登录后才可以访问的页面。
# 比如个人中心页面
response = session.get("http://www.jikedaohang.com/1562336754/profile"
)# 打印响应内容
print (response.text)
复制代码
- 处理HTTPS请求(SSL证书验证)
在想处理这块知识点,我们需要了解一些东西:
- SSL:安全套接字层。是为了解决HTTP协议是明文,避免传输的数据被窃取,篡改,劫持等。
- TSL:Transport Layer Security,传输层安全协议。TSL其实是SSL标准化后的产物,即SSL/TSL
- HTTPS在传输数据时,会先建立TCP连接,建立起TCP连接后,会建立TSL连接。
- 请求可以为HTTPS请求验证SSL证书,就像web浏览器一样,SSL验证默认是开启的,
如果证书验证失败,请求会抛出SSLError:
SSLError: ("bad handshake: Error([('SSL routines', 'ssl3_get_server_certificate', 'certificate verify failed')],)",)
复制代码
遇到请求的SSL验证,可以直接跳过不验证,将verify=False设置一下即可。
import requests
response = requests.get("https://www.12306.cn/mormhweb/", verify = False)
print (response.text)
复制代码
如果验证,那么verify参数可以是传入CA_BUNDLE文件的路径或传入包含可信任CA证书的文件夹路径
import requests
response = requests.get("https://www.12306.cn/mormhweb/", verify = './certfile')
print (response.text)
复制代码
结果: 1.HTTPS请求进行SSL验证或忽略SSL验证才能请求成功,忽略方式为verify=False。
2.SSL证书是由CA机构颁发的,是需要花钱的。
三、总结
requests
网络请求库,暂时我们就写到这里。下面我们会继续学习解析库的学习。
欢迎关注我的公众号,我们一起学习。
转载于:https://juejin.im/post/5c7d332cf265da2dd052620f
Python网络请求库Requests,妈妈再也不会担心我的网络请求了(二)相关推荐
- Python网络请求库Requests,妈妈再也不会担心我的网络请求了(一)
本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 极客导航 即可关注,每个工作日都有文章更新. 一.概况 网络请求可能是每门语言比较重要的一部分了,在Python语言中,虽然有urll ...
- python网络爬虫教程(四):强大便捷的请求库requests详解与编程实战
上一章中,我们了解了urllib的基本用法,详情可浏览如下链接python网络爬虫教程(三):详解urllib库,但其中确实有不方便的地方,为此,我们可以使用更方便更简洁的HTTP请求库request ...
- Python中第三方库Requests库的高级用法详解
Python中第三方库Requests库的高级用法详解 虽然Python的标准库中urllib2模块已经包含了平常我们使用的大多数功能,但是它的API使用起来让人实在感觉不好.它已经不适合现在的时代, ...
- 【技术】解决Maven创建web工程web.xml版本过低的问题,妈妈再也不用的担心我的学习了
解决Maven创建web工程web.xml版本过低的问题,妈妈再也不用的担心我的学习了 一次性解决Maven项目web.xml版本过低的问题 Tom: Peter,你看我在Controller里面通过 ...
- Python 深入浅出 - 网络请求库 Requests
Requests 是用 Python 语言编写的,基于 urllib,采用 Apache2 Licensed 开元协议的 HTTP 库,它比 urllib 更加方便,编写爬虫和测试服务器响应数据时经常 ...
- Python网络解析库Xpath,妈妈再也不会担心我不会解析了
本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 极客导航 即可关注,每个工作日都有文章更新. 一.概况 前两篇我们把网络库Requests大概的用法学了一遍,把网站上的每页数据请求下 ...
- python http get 请求_Python-Http请求库-Requests and AIOHTTP的使用
首先对库进行安装: pip install aiohttp[speedups] pip install requests 一.Requests库 Requests 简便的 API 意味着所有 HTTP ...
- Python爬虫【二】请求库requests
一.requests的常用请求方式 #各种请求方式:常用的就是requests.get()和requests.post() >>> import requests >>& ...
- 爬虫请求库 requests
requests模块 阅读目录 一 介绍 二 基于GET请求 三 基于POST请求 四 响应Response 五 高级用法 一 介绍 #介绍:使用requests可以模拟浏览器的请求,比起之前用到的u ...
最新文章
- 软件测试集成测试广度,软件测试的规范[6]
- 又想到了模板引擎和前端MVVM框架
- 【数据结构与算法】常用算法
- 闭包总结(2018.03.19)
- 【渝粤教育】国家开放大学2018年秋季 0233-21T学前儿童语言教育 参考试题
- Bootstrap 使用Less变量
- 10.210.3 Xcode开发包
- Linux源码包和脚本安装包的安装方法
- hp1015驱动64位_惠普1015驱动下载|惠普1015打印机驱动电脑版 - 极光下载站
- 金士顿u盘分区工具_U盘PE安装ESD格式系统 图文教程
- 我对软件测试的理解以及我的职业规划,希望对你们有所帮助
- 理解和应用向量积与数量积
- 毕达哥拉斯定理a^2 + b^2 =c^2
- video全局事件属性
- 【Python】判断闰年 + Calendar模块
- STM32 BMP图片解析
- Word 任意页插入页码
- C++ Qt高仿QQ影音视频播放器 (二)
- MYSQL——为现有字段添加自增属性
- Android官方开发相关下载资源一揽子大汇总
热门文章
- linux查看发起ddos攻击的ip,在Linux上使用netstat命令查证DDOS攻击的方法
- php 获取相反值,php – 以相反的顺序从单向数组中获取数据
- JAVAOO难以理解的部分
- dbnetlib sqlserver不存在或拒绝访问_404:对不起,您访问的网页不存在
- 不能访问win7计算机,局域网win7无法访问win10,win7访问不了局域网其他电脑
- matlab简单程序实例视频,matlab编程实例100例.docx
- js制定一个单选按钮_【下】每个月整理发票太头疼?手把手教你快速开发一个工具解决!...
- 脉位调制解调 matlab,通信原理与matlab仿真v2 第五章 DBPSK调制解调器(1)
- python中format函数用法简书_增强的格式化字符串format函数
- decorator php,php设计模式 Decorator(装饰模式)