高性能异步爬虫概述_学习总结
python爬虫结课了,最后的高性能爬虫方案
代理:避开IP这种反扒机制
什么是代理:
代理服务器
代理的作用:
突破自身IP访问限制
隐藏自身真实IP
代理IP的类型
http:应用到http协议对应的url中 proxies ={‘协议’:‘ip:端口号’}
https:应用到https协议对应的url中
代理IP的匿名度:
透明:服务器知道该请求使用了代理,也知道请求对应的真实IP
匿名:知道使用了代理,不知道真实IP
高匿:不知道使用了代理,更不知道真实的IP
高性能异步爬虫:
目的:在爬虫中使用异步实现高性能的数据爬取操作
异步爬虫的方式:
多线程/多进程:(不建议)
好处:可以为相关阻塞的操作单独开启线程或进程,阻塞操作就可以异步执行。
弊端:无法无限制的开启多线程或多进程。
线程池/进程池:(适当使用)
好处:我们可以降低系统对进程或线程的创建和销毁的一个频率,从而很好的降低系统的开销。
弊端:池中线程或进程的数量是有上限的。
导入线程池模块对应的类:from multiprocessing import pool
实例化一个线程池对象:pool = pool(n) n:线程池中线程数
线程池的使用:pool.map(阻塞操作,可迭代对象)
使用原则:线程池处理的是阻塞且较为耗时的操作
单线程+异步协程(推荐)
event_loop:事件循环,相当于一个无限循环,我们可以把一些函数注册到这个事件循环上,当满足某些条件的时候,函数就会被循环执行
coroutine:协程对象,我们可以将协程对象注册到循环事件中,它会被事件循环调用
我们可以使用 async 关键字来定义一个方法,这个方法在调用时不会立即执行,而是返回一个协程对象
task:任务,它是对协程对象的进一步封装,包含了任务的各个状态
future:代表将来执行会还没执行的任务,实际上和 task 没有本质区别
async:定义一个协程
await: 用来挂起阻塞方法的执行
异步请求(aiohttp)
环境安装:
pip install aiohttp
使用该模块中的ClientSession
使用aiohttp
请求代替requests
请求
用法:
async with aiohttp.ClientSession() as session:
get()/post():
headers,params/data,proxy=‘http://ip:port’
async with await session.get(url) as response:
text() 返回字符串形式的响应数据
read() 返回二进制形式的响应数据
json() 返回的就是json对象
注意:获取相应数据操作之前一定要使用await进行手动挂起
page_text = await response.text()
相关文章
- origin安装嵌入python_python爬虫之git的使用(origin说明)
- 爬虫注意
- Scrapy 爬虫完整案例—从小白到大神(银行网点信息为例)
- liunx脚本查看某段时间内百度爬虫日志
- 爬虫+反爬虫+js代码混淆
- Python3爬虫学习.md
- 【学习笔记】Python爬虫
- 爬虫介绍
- Python爬虫学习:Cookie 和 Session 的区别是什么?
- 爬虫之异步协程学习总结
- 手机bd tb爬虫教程
- 网络爬虫技术和代理 IP 在ChatGPT等 AI 应用程序时代的重要性
- 为什么使用代理http服务能够让爬虫业务更稳定且快速的完成呢?
- Python爬虫学习——简单爬虫+可视化
- Python学习之路 (六)爬虫(五)爬取拉勾网招聘信息详解编程语言
- 爬虫第二课:解析网页中的元素详解编程语言
- Go语言网络爬虫的接口设计
- Go语言网络爬虫分析器接口
- 网络爬虫的规则
- 零基础写python爬虫之打包生成exe文件