第三章 爬虫提速、selenium模块、requests模块进阶(终) ...

打印 上一主题 下一主题

主题 1508|帖子 1508|积分 4524

目录
一.requests进阶
(一)处置惩罚cookie
(二)防盗链
(三)署理
二.爬虫提速
(一)线程池和历程池
(二)协程
(三)异步http哀求-aiohttp
三. selenium模块


此章节讲授,现在市面大多数爬虫最后技能,分别:处置惩罚cookie、防盗链、署理、线程、历程、协程、异步http哀求aiohttp模块、selenium模块。
一.requests进阶

我们在之前的爬虫中其实已经利用过headers了.header为HTTP协议中的哀求头,一样平常存放一些和哀求内容无关的数据.有时也会存放一些安全验证信息.好比常见的User-Agent,token,cookie等。

通过requests发送的哀求,我们可以把哀求头信息放在headers中.也可以单独进行存放,最终由requests自动帮我们拼接成完整的http哀求头

本末节内容
1.模拟欣赏器登录->处置惩罚cookie
2.防盗链处置惩罚->抓取梨视频数据
3.署理 ->防止被封IP


(一)处置惩罚cookie

Cookies是服务器存储在客户端的一些信息,用于保持会话状态。处置惩罚Cookies可以让爬虫更像一个真实的用户,从而降低被封禁的风险。
在Python中,可以通过requests库的Session对象来处置惩罚Cookies。
例:

注:
get是获取Cookie

(二)防盗链

要防止盗链,利用合适的User-Agent、设置合理的爬取频率、利用署理IP、处置惩罚Cookies、服从网站的Robots协议、模拟人类行为等策略都很紧张。利用合适的User-Agent是最基本的一步,因为它能让服务器以为你的哀求来自一个真实的欣赏器,从而避免被识别为爬虫。以下是关于怎样防止盗链的详细形貌。

  • 利用合理User-Agent
  • 设置合理的爬取频率
  • 利用署理IP
防盗链处置惩罚代码如下:





(三)署理

在Python爬虫中为了更好地绕过反爬机制,获取网页信息,有时大概需要在Python中应用署理服务,如许做的目的就是防止自己的ip被服务器封禁,造成程序运行时中断毗连,那么怎样在python中设置署理呢?
如下是requests的署理处置惩罚方式如下:

注:
你需要去网上找免费给署理的IP的网站,筛选它是否可以支持https和post,肯定要学会开发者模式去查看网页。站大爷 - 企业级高品格署理IP云服务
如果你要访问的IP域名是https,那么你用的署理IP要写上https,若不需要https,只需要http即可。

二.爬虫提速

到现在为止,我们可以办理爬虫的基本抓取流程了,但是抓取效率照旧不敷高 怎样提高抓取效率呢?我们可以选择多
线程,多历程,协程等利用完成异步爬虫.

何为异步?这里我们不讨论蹩脚的概念性问题.直接说效果

打个比方,我们现在写的爬虫可以明白为单线程,比喻为单车道公路,怎样提高效率呢? 很简朴,搞成多车道就OK了啊异步爬虫你就可以明白为多车道同时进行爬取。
本末节涉及内容:
1.线程池和历程池
2.协程
3.多任务异步协程实现
4.aiohttp模块详解

(一)线程池和历程池

线程和历程的区别。
线程是一个执行单位,而历程是一个资源单位。每一个历程至少需要一个线程。
注:
input()程序也是处于壅闭状态
requests.get(bilibili)在网络哀求返回数据之前,程序也是处于壅闭状态的
一样平常情况下,当程序处于 I0利用的时候。线程都会处于壅闭状态。
由此协程可以办理这个问题。
协程:当程序遇见了I0利用的时候。可以选择性的切换到其他任务上。
协程在微观上是一个任务一个任务的进行切换,切换条件一样平常就是IO利用。
协程在宏观上,我们能看到的其实是多个任务一起在执行。如许的称作“多任务异步”利用
以上都是在单线程的条件下。


此末节可以看我之前Python底子篇第十一章 Python语言-高阶本领(终章)-CSDN博客

多历程的代码如下:

线程提速代码案比方下:




(二)协程

input()程序也是处于壅闭状态
requests.get(bilibili)在网络哀求返回数据之前,程序也是处于壅闭状态的
一样平常情况下,当程序处于 I0利用的时候。线程都会处于壅闭状态

协程:当程序遇见了工0利用的时候,可以选择性的切换到其他任务上。
协程代码如下:


注:

asyncio是异步利用代码块。


py3.7以前协程同步代码如下:




注:

time.sleep是个同步利用,当程序出现了同步利用的时候,异步就中断了。

异步利用如下:




Py3.8以后协程的写法如下:


注:

ayncio需要第三方安装,需要在命令提示符下输入 pip install -i ayncio下载ayncio库

(三)异步http哀求-aiohttp

requests.get()同步的代码->异步利用aiohttp

aiohttp需要第三方安装,需要在命令提示符下输入 pip install aiohttp 下载aiohttp库

aiohttp代码如下:




三. selenium模块

selenium:自动化测试工具
可以:打开欣赏器。然后像人一样去利用欣赏器,程序员可以从selenium中直接提取网页上的各种信息
环境搭建:
pip install selenium -i 清华源
下载欣赏器驱动:https://npm,taobao.org/mirrors/chrcmedriver

把解压缩的欣赏器驱动 chromedriver 放在python解释器地点的文件夹。

让selenium启动谷歌欣赏器如下:


注:
selenium模块肯定需要配置相应的欣赏器驱动,根据欣赏器的驱动,在import后面输入相应的代码,在创建对象的时候同理。
selenium实战演示代码如下:









免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

八卦阵

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表