c#抓取网页数据( 基于C#.NET抓取互联网公开数据的爬虫系统及抓取方法)
优采云 发布时间: 2021-10-25 17:08c#抓取网页数据(
基于C#.NET抓取互联网公开数据的爬虫系统及抓取方法)
本发明属于数据采集技术领域,具体涉及一种抓取互联网公共数据的爬虫系统及抓取方法。
背景技术:
网络爬虫是一种自动浏览互联网并按照一定规则自动抓取网页信息的程序或脚本。它是搜索引擎的重要组成部分。搜索引擎在实现网络爬虫的功能时,通常需要一个爬虫系统。完成。
目前市场上的爬虫系统或框架大多采用Python、Java、PHPcrawer等技术。C#很少用于爬虫,C#爬虫系统也很少见,而且因为C#是.NET Framework上面向对象的一种高级编程语言,它可以让程序员快速编写基于MICROSOFT.NET平台的各种应用程序。如果你设计开发一个基于C#抓取互联网公共数据的爬虫系统,将大大提高程序员编写基于MICROSOFT.NET平台的各种应用程序的效率,因此,对基于C#抓取的爬虫系统和方法的需求互联网公开数据非常明显。
技术实现要素:
本发明的目的是利用Python、Java、PHPcrawer等现有技术的爬虫系统。C#很少用于爬虫,影响了程序员编写基于MICROSOFT.NET平台的各种应用程序的效率。问题。
为实现上述目的,本发明提供了一种基于C#的互联网公共数据抓取爬虫系统,包括:
爬虫程序模块,爬虫程序模块用于浏览、抓取和验证数据;
服务器,所述服务器的数量至少为2台,其中部署有爬虫程序模块;
目标站,爬虫程序模块对确定的目标站进行数据浏览和抓取;
非关系型数据库,非关系型数据库用于存储爬虫程序模块捕获的有效数据。
优选地,还包括用于连接验证码识别破解程序模块的第三方接口,验证码识别破解程序模块可以识别和破解目标站的访问请求验证码。
优选地,目标站点、非关系数据库和第三方接口也设置在至少两个服务器中。
优选地,爬虫程序模块包括参数存储单元、目标站捕获单元、目标站分析判断单元、数据捕获单元和数据验证单元。参数存储单元存储参数,其输出端接目标站捕获单元输入端,目标站捕获单元输出端连接目标站分析判定单元输入端,目标站分析判定单元输出端接数据采集单元的输入端,数据采集单元的输出端接数据校验单元的输入端,数据校验单元接参数存储单元,
优选地,所述数据采集单元与数据校验单元之间还设置有数据转换单元,所述数据采集单元将采集到的数据输出至所述数据转换单元,由所述数据转换单元对所述数据进行转换。该单元使用正则表达式或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个,其中部署有爬虫程序模块2;
目标站3,爬虫程序模块2对确定的目标站3进行浏览抓取数据;
非关系型数据库4用于存储爬虫模块2捕获的有效数据。
具体的,本发明的互联网公共数据爬虫系统的爬虫程序模块2基于C#,爬虫程序模块2可以是一个烧录爬虫程序的芯片,该芯片至少设置在两个服务器1优选地,爬虫程序模块2部署在每个服务器1中。
爬虫程序模块2中目标站3的确定可以人为确定。例如,如果您想获取公司的商业登记信息,您可以到国家工商行政管理总局、当地工商行政管理总局、国家企业信用信息公示系统等相关信息查询。 .
但更优选地,爬虫程序模块2包括参数存储单元、目标站捕获单元、目标站分析判断单元、数据捕获单元和数据验证单元。参数存储单元存储参数,其输出端连接目标站捕获单元的输入端,目标站捕获单元的输出端连接目标站分析判断单元的输入端,目标站分析判定单元的输出端连接数据采集单元的输入端 数据采集单元的输出端连接数据校验单元的输入端,数据校验单元连接参数存储器单元,
参数存储单元用于存储提取数据所需的数据请求参数,可根据实际情况进行设置。比如要抓取某公司的工商注册信息,可以设置相关参数为与,公司名称,公司所在省份的关系。这样,参数存储单元中存储的相关参数将是,公司名称:某公司,公司所在省份:上海,同时满足这两个参数。
在其他实施例中,参数存储单元中的参数关系可以具有其他设置,例如OR关系。
目标站抓取单元接收参数存储单元中的数据请求参数信息,据此抓取可能收录所需数据的目标站,然后将抓取到的目标站信息发送给目标站分析确定单元。
目标站点分析确定单元根据参数存储单元中的数据请求参数信息对所有目标站点的URL地址进行解析,通过对URL地址和地址对应的数据信息进行解析,确定目标站点。
数据采集单元结合参数存储单元中的数据请求参数信息,从确定的目标站点采集数据,依次采集不同目标站点的所需数据,并将采集到的数据发送给数据校验单元。
数据校验单元将捕获的数据与参数存储单元中存储的数据参数信息进行比对校验,将校验通过的有效数据存储在非关系型数据库中。
为了数据传输、存储和计算的方便,在数据采集单元和数据校验单元之间还设置了数据转换单元,数据采集单元将采集到的数据输出给数据转换单元。单元,通过数据转换单元,使用正则表达式或Json序列化方法对数据进行过滤提取,然后输出到数据校验单元。
另外,由于部分目标站3具有分页功能,为了避免只抓取第一页的数据导致数据抓取不完整或无效,在数据抓取单元中设置了数据分页判断模块。分页判断模块用于判断数据是否被分页,然后数据抓取单元可以抓取每一页的数据。
服务器2为应用服务器,可与目标站点3进行数据交互,具有可扩展性。例如可以使用Cisco服务器,型号为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中。优选地,爬虫程序模块2部署在每个服务器1中,爬虫程序模块抓取、分析、确定需要抓取数据的目标站3或目标站3可能有需要抓取的数据,那么,爬虫模块2准备数据请求参数,例如:需要抓取的业务数据,需要准备公司关键词:,省:江苏,数据请求参数是江苏的工商数据,三者是“合二为一”的关系。目标站3可以通过爬取分析确定为江苏省当地工商银行管理局,或国家企业信用信息系统。
然后,爬虫程序模块2使用C#语言模拟目标站访问请求,使得访问目标站3后,抓取目标站3中需要的数据,然后使用正则表达式或者Json序列化方法过滤和提取这些数据,然后将这些数据与数据请求参数进行比较,分析比较,确定捕获的数据是否为有效数据,最后将有效数据存储在非关系型数据库中 4.
分析比较捕获的数据是否为有效数据的方法是将捕获的数据与数据请求参数进行比较,看是否收录数据请求参数中的所有参数及其关系。使用现有技术中的其他方法。
在访问目标站点3的过程中,部分目标站点3设置了验证码。因此,步骤S300还应包括:
S301:判断目标站3的访问请求是否需要验证码,如果需要验证码,则捕获请求验证码参数并调用破解验证码服务,然后将破解结果添加到访问请求中并捕获到站 3 的目标数据。
本步骤中,破解验证码的服务可以是爬虫模块2提供的,也可以是*敏*感*词*,增加本发明实施例一所述爬虫系统和本实施例所述抓取方法的适用性。
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的数据时只抓取第一页数据,而忽略第一页以外的数据,导致数据抓取不完整、不完整或根本没有抓取。获取到需要的数据,反复卡在这一步。
与现有技术相比,本发明的抓取方法具有以下优点:
增加了重试机制,爬虫程序在第一次数据抓取失败时会自动重启;数据兼容性大大增强,提高数据质量;增强异常处理以提高资源利用率。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进,均应收录在本发明的保护范围之内。