爬虫浅谈
爬虫就是一个客户端,不过并不会对网页进行渲染。
简单点,构建请求–>请求网络资源。
然而各个网站都是不愿意被自己的资源直接被爬虫所获取,所以增加了一系列的规则,所以爬虫的难度就增加了。
在假期里,多写了几回爬虫,也就多了点经验,可以拿出来谈谈了。
初始的时候,爬虫就是对URL构建请求。当数据请求下来,我们的爬虫就算成功了。随着简易爬虫的构建成功,我们就需要爬取大批量的数据,爬取整站的数据,这个时候,我们会对爬取时间有要求。从根本上解决爬虫时间缓慢的问题便是改变网络环境;从技术上,可以通过多线程、多进程请求下载来缩短时间。
于是,我们武装我们的小爬虫,加入多进程。武装过后的小爬虫,爬取是相当的给力,然而不一会儿服务器就不响应了,或者响应特定的语句“flood alert! you are limited ……”,简言之,“你下载的频率太过分了,你被限制了…”。
好吧,我慢点来!
又一次运行我们的小爬虫,又一次马力十足的进行爬取,然而不一会儿服务器就只是响应“you load too many dataes…..limit….“(你下载太多,被限制了,*-*)。
…..掀桌子
多数网站是有登录限制的,为了保护他们的数据资源,在登录的时候加入验证。不过,魔高一丈,你有验证码,我有打码品台。。又是一番敲代码,成功的获取到验证码并发送到我们的打码平台,嗯哼!
渐渐地,验证码的获取不再是静态的图片,而是一串没请求一次就随机产生图片的URL(丧心病狂呐),我们千辛万苦也只能截取到图片的URL,发送到打码平台后又随机了,码再也不是那个码了。
算了算了,折腾下机器,运行我们的浏览器对整个验证码进行截图,嗯哼!
(算了算了,直接复制浏览器中的cookie,嗯哼!)
总算是可以利用程序登录了,既然我来到了这片花香地,我眼所望之处,便是我的了。。。
然而,flood alert! you are limited ……
然而,you load too many dataes…..limit….
然而,session会话时长仅10分钟
…..掀桌子
现阶段的网站多是异步加载的(可我们要抓取的不一定是现阶段的网站…..),异步加载的数据在我们请求的网页中是获取不到的,可能在浏览器中显示呀,所以我们驱动浏览器对其渲染后进行获取页面,数据还是我们的。*-*
对于异步加载的数据,说白了就是等页面加载完成后在向页面填充数据利用浏览器渲染,渲染多浪费资源啊,大好的时光怎能,,,,我们可以利用浏览器或者抓包工具对网络请求进行监控,对异步请求的格式模拟,直接批量获取数据,恩,武装多进程……
大量的数据获取到后,哇,这是一片未开发的苞米地呀,嗯,以后学数据挖掘!
领取专属 10元无门槛券
私享最新 技术干货