如何用ip代理打造爬虫框架

第一,为什么要造轮子?
 
有兴趣的同学可以去各大招聘网站看一看爬虫工程师的要求。大部分都是JAVA,PYTHON甚至NODEJS,C++,或者在开源中国查询C#的爬虫。只有几个很简单的项目几年没更新了。从我看的一些文章来看,就纯性能而言,PYTHON与JAVA相比并不处于弱势。况且根据我多年的开发经验,大部分爬虫的性能瓶颈都是并发下载(网速)和IP池,所以我觉得用C#写一个爬虫框架是绝对可行的。为什么我的大?NET有强大的爬虫框架吗?老实说,我不知道。可能爬虫框架核心比较简单,大牛不喜欢。也许吧。NET开发人员没有其他语言的开发人员勤奋,也没有。NET没有其他语言高。随着……的宣布。NET开源新闻,我觉得是时候开发一个跨平台跨语言的爬虫框架了。我不喜欢复杂的事情。我一直觉得复杂的事情容易出问题,可能跟我个人能力有限,控制不了有关。所以在设计DotnetSpider的时候,我参考了JAVA下一个轻量级爬虫框架webmagic,但是我绝对有自己的理解和改进。
 
 
二、框架设计
 
其实我觉得爬虫的设计已经相当成熟了,大部分都会拿出下面的图来说事。由于我是参考webmagic,所以要贴出来给大家看看(图片直接取自webmagic)。
 
调度器:负责URL的调度,可以实现如queue、priority scheduler、redisscheduler(可用于分布式)等等。
 
下载器:负责下载HTML,如HttpDownloader、浏览器下载器(web驱动)、Fiddler下载器、本地文件下载器等。
 
PageProcesser:负责HTML解析和符合规则的新URL解析。从上图可以看出,传入处理器的Page对象包含了下载的完整HTML或JSON数据。
 
管道:负责数据存储,如MySql、MySqlFile、MSSQL、MongoDb等。
 
第三,与其他爬行动物的区别
 
用JSON来定义crawler,这样就可以最终实现跨语言(只需要为不同的语言编写一个JSON转换的provider)
 
因为使用JSON进行解析,所以可以实现一个类中的属性是其他类(只有MongoDB,在关系数据库中不容易存储)。
 
自动建表
 
有一个版本的。NET核心,所以可以跨平台(很多任务已经在LINUX下运行)
 
由于IP代理的不稳定性,没有仔细测试和使用代理模块,而是实现了另一种IP切换方式(ADSL拨号)。
 
添加基础数据验证模块。
 
第四,最基本的使用方法
 
最基本的使用方法是不需要参考Extension,只需要参考Common,Core,JLog,然后需要自己实现IPipeline和Processer。
 
使用我们的代理云有什么优势?
 
1分布式代理IP数万个代理IP节点分布在全国各省市,没有重复的IP段。
 
支持多线程和高并发。
 
家庭宽带线路所有资源来自家庭宽带终端,IP绿色纯净,适用于所有项目。
 
多许可证使用代理IP时,需要用户名密码或IP白名单绑定,后台可自由切换。
 
5长效+HTTPS所有代理IP都支持HTTPS协议,代理IP平均使用时间在没有客户端支持的情况下长达4小时。