一种基于C#抓取互联网公开数据的爬虫系统及抓取方法技术领域
本发明属于数据采集技术领域,具体的涉及一种抓取互联网公开数据的爬虫系统
及抓取方法。
背景技术
网络爬虫是一种按照一定的规则,自动化地浏览网络和自动化地抓取网页信息的
程序或者脚本,是搜索引擎的重要组成部分,搜索引擎在实现网络爬虫的功能时,通常需要
一个爬虫系统来实现。
目前市面上大部分爬虫系统或者框架都是采用Python,Java,PHPcrawer等技术,
采用C#做爬虫的很少,C#爬虫系统也少,而由于C#是微软公司发布的一种面向对象的、运行
于.NET Framework之上的高级程序设计语言,它使得程序员可以快速地编写各种基于
MICROSOFT.NET平台的应用程序,如果设计开发对基于C#抓取互联网公开数据的爬虫系统
将会大大提高程序员编写各种基于MICROSOFT.NET平台的应用程序的工作效率,因而,对基
于C#抓取互联网公开数据的爬虫系统及抓取方法的需求是十分明显的。
发明内容
本发明的目的在于针对现有技术中的爬虫系统都是采用Python,Java,PHPcrawer
等技术,采用C#做爬虫很少,因而影响程序员编写各种基于MICROSOFT.NET平台的应用程序
的工作效率的问题。
为实现上述目的,本发明提供一种基于C#抓取互联网公开数据的爬虫系统,包括:
爬虫程序模块,所述爬虫程序模块用于浏览、抓取与校验数据;
服务器,所述服务器数量为至少两台,其内均部署有爬虫程序模块;
目标站,所述爬虫程序模块在确定的所述目标站上浏览、抓取数据;
非关系型数据库,所述非关系型数据库用于存储所述爬虫程序模块抓取的有效数
据。
优选地,还包括第三方接口,用于外接验证码识别破解程序模块,所述验证码识别
破解程序模块能够识别、破解所述目标站的访问请求验证码。
优选地,所述目标站、非关系型数据库、所述第三方接口也设置于至少两台所述服
务器内。
优选地,所述爬虫程序模块内包含参数存储单元、目标站抓取单元、目标站分析确
定单元、数据抓取单元、数据校验单元,所述参数存储单元存储参数,其输出端连接所述目
标站抓取单元输入端,所述目标站抓取单元输出端连接所述目标站分析确定单元输入端、
所述目标站分析确定单元输出端连接所述数据抓取单元输入端,所述数据抓取单元输出端
连接所述数据校验单元输入端,所述数据校验单元与所述参数存储单元连接,所述数据校
验单元输出端连接所述非关系型数据库。
优选地,所述数据抓取单元与所述数据校验单元之间还设置有数据转换单元,所
述数据抓取单元将抓取到的数据输出给所述数据转换单元,经所述数据转换单元将数据使
用正则表达式或者Json序列化方法加以筛选提取后输出给所述数据校验单元。
优选地,在所述数据抓取单元内设数据分页判断模块,数据分页判断模块用于判
断数据是否分页,进而实现数据抓取单元抓取每一页数据。
优选地,所述非关系型数据库是NoSQL。
与现有技术相比,本发明所述的爬虫系统具有以下优点:
是基于C#抓取互联网公开数据,而不是Python,Java,PHPcrawer等技术,能够提高
程序员编写各种基于MICROSOFT.NET平台的应用程序的工作效率;可外接验证码识别破解
程序模块,支持多种验证码破解,能够更好更快的访问目标站;支持部署到多台服务器,减
少服务器的负载压力,运行、存储更多数据;支持NOSQL数据存储,读取的速度得到大幅度提
升。
本发明还提供一种基于C#抓取互联网公开数据的抓取方法,包括前文所述的基于
C#抓取互联网公开数据的爬虫系统,还包括以下步骤:
S100,将所述爬虫程序模块部署到至少两台所述服务器;
S200,确定需要抓取数据的目标站并准备数据请求参数;
S300,使用c#语言模拟目标站访问请求,抓取到目标站的数据;
S400,将抓取到的数据使用正则表达式或者Json序列化方法加以筛选提取;
S500,验证抓取到的数据跟参数匹配看是否是有效数据;
S600,将有效数据存储到非关系型数据库。
优选地,所述步骤S300中包括:
S301,判断所述目标站访问请求是否需要验证验证码,若需要验证验证码,则抓取
请求验证码参数并且调用破解验证码服务,然后将破解结果添加到访问请求中,抓取到目
标站的数据;
S302,判断目标站的数据抓取是否成功,若成功,则进入步骤S400;若失败,则进入
步骤S303;
S303,将目标站访问状态标注为失败,爬虫程序检测到目标站访问状态是失败时,
需要重新模拟目标站访问请求以抓取目标站数据,即重复步骤S300使用c#语言模拟目标站
访问请求,然后进入步骤S301,直至判断目标站的数据抓取是成功为止。
优选地,所述步骤S400与步骤S500中包括分页判断,即,判断所述目标站提取的数
据有无分页,若有分页,则进行翻页,然后重复步骤S400;若无分页,则直接进入步骤S500。
与现有技术相比,本发明所述的抓取方法具有以下优点:
添加了重试机制,第一次抓取数据失败会自动重新启动爬虫程序;大幅度增强了
数据的兼容性,以提高数据的质量;增强异常处理,提高资源的利用率。
附图说明
图1为本发明第一实施例所述爬虫系统示意图;
图2为本发明第二实施例所述抓取方法的步骤示意图;
图3为本发明第二实施例所述抓取方法的流程示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明
的具体实施例做详细的说明。
第一实施例
参见图1,本实施例介绍了一种基于C#抓取互联网公开数据的爬虫系统,包括:
爬虫程序模2,所述爬虫程序模块2用于浏览、抓取与校验数据;
服务器1,所述服务器1数量为至少两台,其内均部署有爬虫程序模块2;
目标站3,所述爬虫程序模块2在确定的所述目标站3上浏览、抓取数据;
非关系型数据库4,所述非关系型数据库4用于存储所述爬虫程序模块2抓取的有
效数据。
具体地,本发明所述互联网公开数据的爬虫系统的所述爬虫程序模块2基于C#,所
述爬虫程序模块2可以是刻录了爬虫程序的芯片,所述芯片设置于至少两台所述服务器1
内,优选地是,在每一台所述服务器1内均部署所述爬虫程序模块2。
所述爬虫程序模块2中目标站3的确定可以通过人为确定,比如,如果想要得到某
公司的工商注册相关信息,则可以上相关的比如国家工商行政管理局,或者地方工商行政
管理局或者全国企业信用信息公示系统。
但更为优选地是,所述爬虫程序模块2内包含参数存储单元、目标站抓取单元、目
标站分析确定单元、数据抓取单元、数据校验单元,所述参数存储单元存储参数,其输出端
连接所述目标站抓取单元输入端,所述目标站抓取单元输出端连接所述目标站分析确定单
元输入端、所述目标站分析确定单元输出端连接所述数据抓取单元输入端,所述数据抓取
单元输出端连接所述数据校验单元输入端,所述数据校验单元与所述参数存储单元连接,
所述数据校验单元输出端连接所述非关系型数据库。
所述参数存储单元用于存储所需提取数据的数据请求参数,可以根据实际情况进
行设置,比如,想要抓取某公司的工商注册信息,那么可以设定相关参数为和的关系,公司
名称,公司所在省份,这样,参数存储单元存储的相关参数会是,公司名称:某公司,公司所
在省份:上海,同时满足这两个参数。
在其他实施例中,参数存储单元内的参数关系可以有其他设置,比如或的关系。
所述目标站抓取单元接收所述参数存储单元内的数据请求参数信息,以此为依据
抓取可能包含所需数据的目标站,然后将抓取到的目标站信息发送给所述目标站分析确定
单元。
所述目标站分析确定单元根据参数存储单元内的数据请求参数信息,分析所有目
标站的URL地址,通过对URL地址和该地址对应内的数据信息进行分析,确定目标站。
所述数据抓取单元结合所述参数存储单元内的数据请求参数信息,从确定的目标
站内开始抓取数据,依次抓取不同目标站内的所需数据,并将抓取到的数据发送给数据校
验单元。
所述数据校验单元将抓取到的数据与所述参数存储单元内存储的数据参数信息
进行对比校验,将通过校验的有效数据进行储存,存储到所述非关系型数据库中。
为了数据传送、存储、计算的方便,所述数据抓取单元与所述数据校验单元之间还
设置有数据转换单元,所述数据抓取单元将抓取到的数据输出给所述数据转换单元,经所
述数据转换单元将数据使用正则表达式或者Json序列化方法加以筛选提取后输出给所述
数据校验单元。
并且,由于有一些目标站3存在分页的情况,为了避免只抓取了第一页的数据导致
数据抓取不完全或者无效,因此,在所述数据抓取单元内设数据分页判断模块,数据分页判
断模块用于判断数据是否分页,进而实现数据抓取单元抓取每一页数据。
所述服务器2是一种应用服务器,其可与目标站3进行数据交互,具有可扩展性,比
如,可采用思科服务器,型号为CISCO UCS C240 M3(2U);当然,也可以采用其他应用服务
器,只要能够实现功能即可。
所述目标站3,其数量为若干个,所述爬虫程序模块2在所述目标站3上抓取所需数
据,所述目标站3的最小单位是一个网页,所述爬虫程序模块2会从确定的目标站3浏览,分
析,抓取,校验数据,依次的将其所遇到的所有目标站3上的所需数据抓取、校验,对于所述
目标站3的数据的抓取深度根据实际需要设定;一般而言,抓取深度越大,所述目标站的数
量越多。
所述非关系型数据库4是NoSQL,主要作用是存储所述爬虫程序模块抓取、校验后
的数据。
为了满足对所述目标站3进行浏览以抓取数据的目的,考虑到所述目标站3上可能
设有验证码,因此,本发明所述爬虫系统还包括第三方接口,用于外接验证码识别破解程序
模块,所述验证码识别破解程序模块能够识别、破解所述目标站的访问请求验证码,所述验
证码包括多种类型的验证码,比如文字验证码、图片验证码、极验证码;所述验证码识别破
解程序模块可以是一个芯片,其上刻录了验证码识别破解程序,也可以是一个装置,装置内
除芯片外还包括电路等其他必要的功能模块。
所述验证码识别破解程序模块可以是综合的能够破解多种验证码的一个程序模
块;也可以是多个第三接口,分别外接多个验证码识别破解程序模块,多个验证码识别破解
程序模块包括分别对应专门识别文字验证码的第一验证码识别破解程序模块,对应专门识
别数字验证码、数字加减运算的第二验证码识别破解程序模块,对应专门识别图片验证码
的第三验证码识别破解程序模块,而这些验证码识别破解程序模块均可在现有技术中找
到。
所述目标站3、非关系型数据库4、所述第三方接口也设置于至少两台所述服务器1
内。
或者,所述第三方接口也可以设置在所述爬虫程序模块上。
与现有技术相比,本发明所述的爬虫系统具有以下优点:
是基于C#抓取互联网公开数据,而不是Python,Java,PHPcrawer等技术,能够提高
程序员编写各种基于MICROSOFT.NET平台的应用程序的工作效率;可外接验证码识别破解
程序模块,支持多种验证码破解,能够更好更快的访问目标站;支持部署到多台服务器,减
少服务器的负载压力,运行、存储更多数据;支持NOSQL数据存储,读取的速度得到大幅度提
升。
第二实施例
参见图1-图3,本实施例介绍了一种基于C#抓取互联网公开数据的抓取方法,包括
第一实施例所述基于C#抓取互联网公开数据的爬虫系统,还包括以下步骤:
S100,将所述爬虫程序模块2部署到至少两台所述服务器1;
S200,确定需要抓取数据的目标站3并准备数据请求参数;
S300,使用c#语言模拟目标站访问请求,;
S400,将抓取到的数据使用正则表达式或者Json序列化方法加以筛选提取;
S500,验证抓取到的数据跟数据请求参数匹配看是否是有效数据;
S600,将有效数据存储到非关系型数据库4。
具体地,将所述爬虫程序模块2部署到所述服务器1内,优选地,每一台所述服务器
1内均部署了所述爬虫程序模块2,所述爬虫程序模块抓取、分析、确定需要抓取数据的目标
站3或者可能存在需要抓取的数据的目标站3,然后,所述爬虫程序模块2准备数据请求参
数,例如:需要抓取苏州朗动网络科技有限公司的工商数据,则需要准备公司关键字:苏州
朗动网络科技有限公司,所在省份:江苏,数据请求参数即为工商数据、苏州朗动网络科技
有限公司,江苏,三者是一个“并”的关系,目标站3通过抓取、分析后可能确定的是江苏省地
方的工行行政管理局,或者全国企业信用信息系统。
然后,所述爬虫程序模块2使用C#语言模拟目标站访问请求,从而访问了目标站3
后,抓取目标站3内所需要的数据,并且,将抓取到的数据再使用正则表达式或者Json序列
化方法加以筛选提取,然后将这些数据与数据请求参数进行对比,分析对比判断抓取到的
数据是否为有效数据,最后,将有效数据存储到非关系型数据库4中。
分析对比判断抓取到的数据是否为有效数据的方法是,通过抓取到的数据与是数
据请求参数进行对比,看是否均包含了所述数据请求参数中的所有参数及其关系,也可以
采用其他现有技术中的方法。
在对目标站3的访问中,有些目标站3设置了验证码,因此,所述步骤S300还应包
括:
S301,判断所述目标站3访问请求是否需要验证验证码,若需要验证验证码,则抓
取请求验证码参数并且调用破解验证码服务,然后将破解结果添加到访问请求中,抓取到
目标站3的数据。
这一步骤中,破解验证码服务可以是所述爬虫程序模块2自带的,也可以是如第一
实施例中所述的第三方接口外接的,并且,所述第三方接口的数量可以是一个也可以是多
个,这样能够应对不同类型的验证码,尽量扩大能够访问的目标站3的范围,增加本发明第
一实施例所述爬虫系统和本实施例所述的抓取方法的适用性。
S302,判断目标站3的数据抓取是否成功,若成功,则进入步骤S400;若失败,则进
入步骤S303。
这一步骤中的判断方法多样化,可采用现有技术中的判断方法即可,即,判断是否
有将抓取的数据存储起来,若已存储到服务器中,则算成功,这可根据对服务器的的存储容
量的变化来判断。
S303,将目标站3访问状态标注为失败,爬虫程序检测到目标站3访问状态是失败
时,需要重新模拟目标站3访问请求以抓取目标站3数据,即重复步骤S300,然后重复步骤
S301。
就是说,如果在对目标站3的访问请求过程中,遇到了验证码无法破解从而抓取数
据失败的情况,那么,会将目标站3访问状态标注为失败,所述爬虫程序模块2检测到目标站
3访问状态是失败时,则重新模拟目标站3访问请求再次请求访问目标站3,然后再次对目标
站3的验证码进行识别与破解,直至成功抓取到目标站3的数据为止。
考虑到所述目标站3可能存在分页的情况,所述步骤S400与步骤S500中包括分页
判断,即,判断所述目标站3提取的数据有无分页,若有分页,则进行翻页,然后重复步骤
S400;若无分页,则直接进入步骤S500。
这样能够有效的避免在对目标站3的数据抓取时,只抓取了第一页的数据,而遗漏
了第一页以外的数据,从而导致数据抓取不全面、不完整或者根本没有抓取到所需的数据,
而重复卡死在这一步骤中。
与现有技术相比,本发明所述的抓取方法具有以下优点:
添加了重试机制,第一次抓取数据失败会自动重新启动爬虫程序;大幅度增强了
数据的兼容性,以提高数据的质量;增强异常处理,提高资源的利用率。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在
本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护
范围之内。