| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> Python 爬虫学习笔记(九)requests库+实战登录古诗文网(含验证码) -> 正文阅读 |
|
[网络协议]Python 爬虫学习笔记(九)requests库+实战登录古诗文网(含验证码) |
一、requests基本使用requests库是python自己封装的一个库,使用起来会方便很多 首先在PyCharm中pip install requests 1个类型6个属性: response的类型是models.Response而不是HTTPRsponse
二、GET请求requests库实现GET请求会比urllib简单许多 需要注意的点如下:
代码如下,关键代码只有一行!
三、POST请求还是以百度翻译为例,跳过一些步骤,详情可以对比文章urllib的POST请求 需要注意的点如下:
代码如下,关键代码只有一行! 示例代码如下:
四、代理requests使用代理也简单很多,与urllib的代理方法详情请看urllib代理,这里还是以查看ip地址为例 只需给requests.get函数添加参数proxies即可,示例如下:
五、实战:登录古诗文网站(有验证码)首先在登录界面故意输入错误的密码,不要点击确定否则会自动跳转。抓取登陆接口,在Form Data中找到了我们输入的账号密码,说明接口抓取的没有错。 接下来一个个突破: 1. VIEW的两个变量试着在网页源码搜索VIEW的两个变量,果然源码中出现了,那好说,我们只需要获取页面的源码,然后解析获取值就可以了。
2. 验证码code验证码是一张图片,我们可以定位到它的url,点进去会发现,每次刷新验证码也会改变,我们可以把验证码图片下载下来然后文字识别获取它的值。
文字识别这里我用到了百度智能云提供的文字识别OCR,这里不详细叙述,百度有详细的API使用方法。 3. 模拟登录data里面的变量都确定之后,就可以用下面的代码,requests.post来模拟表单提交登录信息完成登陆了。最后在把登陆后的页面源码下载下来,打开检查一下是不是我们想要的页面即可。
4. 有坑!!!我们在获取验证码图片时,用到了一次get请求,最后模拟登陆时,又进行了一次post请求。问题在于,每一次不同的请求都会导致验证码刷新!! 我们必须用到session = requests.session()来创建一个对话,然后用这个session来进行get请求和post请求,这样就能确保请求是同一个,验证码不会被刷新。并且之后的requests.get和requests.post要换成session.get和session.post 5. 完整代码
将下载的页面源码打开,可以看到明显是已经登录后的状态,虽然没有前端的渲染 总结
|
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 5:48:28- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |