0
点赞
收藏
分享

微信扫一扫

网站是如何反爬虫的?

mm_tang 2022-04-24 阅读 58

urllib模块
在介绍关于防止反爬虫策略之前,先学习另一个爬虫方法。
在之前的文章中提到了最常用的爬虫方式就是调用requests模块,下面介绍另一个方法,就是调用urllib模块,然后利用里面的urlopen和read方法去获取网页信息。
下面以百度为例,利用urllib模块获取百度页面信息,具体代码如下:

输出结果如下:

可见,read方法获取的页面内容为bytes类型,要转成字符串格式需要对其进行decode解码。

反爬虫
第一步:模拟浏览器(改变headers中的User-Agent)
通过模拟浏览器中的user-agent信息,可以实现防止反爬虫,让服务器认为是浏览器发出的请求,而不是python发出的,从而防止反爬虫。
首先要查看浏览器的user-agent信息:打开网页之后,然后按F12就可以查看网页信息,可以对网页进行分析。再点击上面的Network选项卡,刷新之后点击出现的第一个网址,就可以看到请求与响应信息。
如下图所示:

把这个信息复制到代码中:

 

 

这样就模拟浏览器可以防止反爬虫,当然在调用requests模块爬虫时,在get方法中加入浏览器的user-agent信息也是一样的可以防止。

第二步:设置代理IP
这里推荐一款适合爬虫的代理ip---代理云
爬虫的小伙伴可以去领取免费的代理IP试一下
国内高质动态IP。时效2-10分钟,现在注册还能免费领取一万代理IP


当我们使用同一个IP去爬取同一个网站上的网页时,久了之后会被该网站服务器屏蔽掉,这样是对我们很不利的。因此我们可以利用一些其他的代理IP去代替我们自己的IP,这样就算被屏蔽掉,在换一个IP就可以。
在urllib中需要使用ProxyHandler类来创建新的代理,代码如下:

而利用requests模块爬取页面信息修改代理IP要简单很多,代码如下:

通过上面的代码就利用设置代理IP实现了防止反爬虫。
当我们使用代理IP时,怎么才能知道该IP是否可用呢?下面的一小段代码就可以测试IP是否可用:

运行结果如下:

说明该IP是可以使用的。

网站反爬严重,需要使用高质量ip,一般的ip可能很容易就会被限制,这里我用的是豌豆的http代理,效果还不错。

有需要可以加这个业务员微信cg19920815

举报

相关推荐

0 条评论