一、爬虫设计要点

想要向批量抓取某一个网站,就需要自己搭建一套爬虫框架,搭建前要考虑几个问题:避免被封IP,图片验证码识别,数据处理等。

封IP最常见的解决方案就是使用代理IP,其中网络爬虫配合 98IP HTTP代理,响应极速,自营服务器节点遍布全国,可以很好的辅助完成爬虫任务。

比较简单的图片验证码可以自己通过pytesseract库编写识别程序,这个只能识别简单的拍照类图片数据。到更加复杂的比如滑动鼠标,滑块,动态图片验证码只能考虑购买打码平台进行识别。

至于数据处理,如果你拿到的数据发现被打乱了,解决办法就是识别出它的扰乱规律或者通过源js代码进行获取通过python的execjs库或者其他执行js的库实现数据提取。


二、分布式爬虫解决方案

要想实现批量抓取某个大站的数据比较好的方式是通过维护4个队列。

1.url任务队列--里面存放的是待抓取的url数据。

2.原始url队列--存放的是抓取的网页中提取出来但是还未经过处理的,处理主要是检查是否需要抓取,是否重复抓取等。

3.原始数据队列--存放的是爬取的数据未经过任何处理。

4.二手数据队列--存放的是进过数据处理进程的待存储的数据。


以上的队列分别有4种进程进行监听执行任务,分别是:

1.爬虫抓取进程--监听url任务队列,抓取网页数据并将抓到的原始数据丢到原始数据队列。

2.url处理进程:监听原始url队列,过滤掉非正常的url和重复抓取的url。

3.数据提取进程:监听原始数据队列,将原始数据队列进行关键数据的提取其中包括新的url和目标数据。

4.数据存储进程:将二手数据整理过后存放到mongodb里面。