天天看点

大规模抓取的抓取效率和抓取技巧问题

####

大规模抓取的抓取效率和抓取技巧问题

这个话题,只在大规模的时候有用,抓取几十个网页,其实差别不大,不需要这个问题,

###

第一个问题,

输入url,到返回数据发生了什么

这个你面试可以说是一个经典的面试题,

对这个问题越了解,你越能优化大规模的抓取,考验的是你的综合能力,

客户端发起请求,

dns解析,要连接dns服务器,

可以使用直接ip访问,绕过dns解析,这就节省了时间,

可以使用cmd命令,dig,查看dns解析域名的耗时,

在大量的抓取的时候,可以节省很多时间,

cdn服务器,这个是大型网站,需要用这个来分发,根据物理地址来分发不同的请求到不同的服务器,可以减轻压力,

这个不理解,需要再次了解,

指定了cdn服务器,可以请求更多次,

可以通过不同的省份的ip,去ping这个域名,把所有的cdn服务器的节点ip全都拿到,

如果一个cdn可以抓取100次,就要屏蔽你,那你换了cdn服务器之后,假设32个cdn,可以是100*32次,才会屏蔽你,

很多网站会对图片和视频,来做cdn服务,

抓取视频的时候,就应该使用这个cdn的优化,

负载均衡

这个也是大型网站才会有这个,小网站没有,

抓取技巧,

一个网站可能有web,app,h5,三套,

不同的端,背后可能是不同的ip,

我们可以极限使用ip,

sitemap,这个是seo优化的一部分,

天眼查就有这个,里面所有的url都有,

这种尤其是小说,漫画,新闻这样的网站,会把所有的图书,所有的章节都放在这个地方,

可以在robot里面看到,

测试站,灰度站,

这个地方往往没有ip限制,就可以安心抓取

有网站可以把一个域名的所有二级域名都拿到,我们就可以发现一些线索,

网站接口工具扫描,

可以发现对外没有暴露的api,

这个可以更方便的抓取,

url规律抓取,

比如id是自增的

所以拿到一个网站之后应该是先分析,先玩一玩一个网站,

账号问题,可能不同的端对账号的限制不一样的,

可能就能绕过账号的问题

另外账号也有网站上卖的,比如天眼查的账号

抓需要登陆的数据

1,实打实的登陆

2,手动登陆,拿到cookie,

账号要养的,

而且要测试网站的屏蔽阈值,根据这个,可以算出来爬取成本的,

验证码的问题,

少去对刚人家的风控,

什么时候会触发验证码?

比如你抓取天眼查,你的header一直不变,比如header里面的refer一直不变,这就不可能,就会触发验证码

账号异地登陆,也会,

脏ip,这个ip被标注了,

对抗验证码,这个不推荐,我们是要拿数据,不是要硬刚别人,你硬刚,别人就会搞你,

但是你要永久抓取方案呢?有人会去重构requests库,可以抓取每天3000-50000万,拿去卖数据,这种就要硬刚了,

做舆情的,就要做永久性抓取方案,

遇到验证码,可以绕过,可以通过换ip,

ip问题,

如果不是以爬虫为生的公司,基本不会投入太多成本,

1,使用芝麻代理这种,

2,使用vps拨号,

第一种部署方法:

这种如果每天爬取几万,可以放到这个机器上跑爬虫,

然后你试出来100次会屏蔽你,那你的爬虫就可以计数,然后就可以重新拨号,

适合那种总爬取量几千万的

可以定时把数据往本地拉取,

抓取天眼查,每天100万,然后抓取10几天就可以了,

第二种部署方法:

如果有多台vps服务器呢,

就要把vps服务器配置成为代理服务器,

需要有一个固定ip的服务器,然后其他的代理服务器上报这个ip到固定服务器,

各个服务器之间的通信,可以使用socket通信,

可以使用阿里服务器来担任这个固定ip服务器,然后就可以作为服务端,其他的代理服务器作为客户端,作为通信,

第三种方法

使用dns服务器,来解析代理服务器的域名,获得ip,

可以到阿里买域名,就是几块钱,

然后把域名配置上,

继续阅读