站点图标 江湖人士

python爬虫零基础入门反爬的简单说明

python爬虫零基础入门反爬的简单说明

之前在《若何起头写你的第一个python脚本——简单爬虫入门!》中给大师分享了一下写一个爬虫脚本的根基步调,今天继续分享给大师在初期碰到的一个很烦人的问题——反爬及处置法子!

根基步调:获取网页源代码——婚配需要的内容——提取并保留。在这两头经常碰到这么几类问题:

脚本中获取的网页源代码和网页右键查看的源代码分歧(编码格局的问题除外),或者前往400形态码

需要登录才能获取,不登录不克不及查看源代码,网页中也是需要登录才能够拜候的

起头能够获取内容,运转一段时间后报错(具体环境有:办事器拒绝毗连,即ip被封等)一般为HTTPError

某些网站反感爬虫的到访,于是间接拒绝所有爬虫的请求,或者前往其他的网页源码好比:毗连屡次稍后在拜候,或者间接前往403的形态码,好比抓取简书主页的时候呈现下图

这是由于我们在拜候网站办事器的时候,没有做任何的伪装,就相当于告诉办事器“我是个脚本”,那么办事器当然不客套的拒绝你了!

处置方式其实很简单,我们在代码中伪装本人是个浏览器就能够了,requests库供给了响应的方式,headers参数,我们从头请求简书主页,插手我的headers参数,在看看成果

如许就实现了网页源代码的获取,这里用到了User-Agent这个参数,它的感化就是告诉HTTP办事器, 客户端利用的操作系统和浏览器的名称和版本值,获取它也很简单,好比我用的火狐浏览器,打开网页后,用F12打开开辟者东西,然后选择收集,当拜候简书主页的时候,会呈现良多的情请求,随便找一个点击一下,左边就会呈现请求头了,如下图:

在我们想抓取某些需要登录才能够拜候的网页时,就需要带上cookie参数,这个参数在请求头中,它记实了我们的账号消息,具体实现的方式有2个,1就是插手header参数中或者独立写到requests中,代码为requests.get(url,cookie=cookie)。而requests库还供给了别的一个方式:

session,主动保留cookies,能够设置请求参数,下次请求主动带上请求参数

session能够用来供给默认数据,函数参数级此外数据会和session级此外数据归并,若是key反复,函数参数级此外数据将笼盖session级此外数据。若是想打消session的某个参数,能够在传送一个不异key,value为None的dict

也就是说,我们利用session提交cookie后,办事器若是对cookie有变更,那么session也会主动记实,很是便利,代码实现:

对于一些简单的验证码,能够进行简单的识别,可是有些反人类的好比12306的验证码,要么间接法式中显示并手工验证,要么通过第三方的打码平台进行验证,当然这个是要收费的。

我们经常会碰到,脚天性够一般运转,可是很快就呈现了报错,近程办事器断开毗连或者拒绝拜候等等环境,这是由于很多多少网站都有设定拜候速度、次数、流量之类的。

同时这里也但愿大师节制住本人,不要多线程不限制的下载,那样对网站很欠好的!

这种环境下,requests库供给了一个proxies的方式,就是指定ip代办署理的功能,它的格局是{http: }如许的,留意key值部门,必然要准确,不然会报错。

而不消代办署理的话,也能够在法式中人工插手休眠时间的体例来强制脚本不那么快的运转,这就需要用到time库了,好比每次请求间隔0.5秒:time.sleep(0.5),或者加上random库,如许:time.sleep(random.random()*2)

为什么要把selenium放到最初呢,由于用它能够处理大部门的反爬!是的,这个库就是这么厉害!

这里就不细致讲了,随后开个单篇,我们慢慢说!仍是那句话,进修本身是一个漫长的过程,我们需要不竭的操练来加强我们的进修乐趣,以及学到更结实的学问!大师加油!

退出移动版