CN110020062B - 一种可定制的网络爬虫方法及*** - Google Patents
一种可定制的网络爬虫方法及*** Download PDFInfo
- Publication number
- CN110020062B CN110020062B CN201910292891.5A CN201910292891A CN110020062B CN 110020062 B CN110020062 B CN 110020062B CN 201910292891 A CN201910292891 A CN 201910292891A CN 110020062 B CN110020062 B CN 110020062B
- Authority
- CN
- China
- Prior art keywords
- crawler
- configuration file
- target
- name
- configuration
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明实施例提供了一种可定制的网络爬虫方法及***,其中可定制的网络爬虫方法,包括:通过人工输入配置界面获取单个待生成爬虫任务的配置项;利用所述配置项中的第一爬虫名称,查找为所述第一爬虫名称预先配置的网站静态配置文件,作为目标静态配置文件;通过所述目标静态配置文件中包含的第一网站运行配置文件名称,查找为所述第一网站运行配置文件名称预先配置的网站运行配置文件,作为目标运行配置文件;基于所述目标静态配置文件、所述目标运行配置文件及所述配置项,生成包含所述配置项的爬虫任务;获取所述目标静态配置文件中包含的爬虫入口链接;执行用于对所述爬虫入口链接进行目标数据抓取的爬虫任务。
Description
技术领域
本发明涉及网络爬虫技术领域,特别是涉及一种可定制的网络爬虫方法及***。
背景技术
随着网络技术的飞速发展,互联网成为人们获取互联网信息的一个重要途径,而在这个信息***的时代,互联网信息以指数级的速度增长,以至于互联网信息过载,超出了人工处理的能力。网络爬虫相对于传统人工采集数据的方式,可以更加高效、实时和准确地采集大规模数据。
网络爬虫是一种可以按规则自动抓取互联网信息的程序或脚本,一般对于定向网络爬虫而言,定向网络爬虫需要指定一些特定的网站作为数据源进行精确采集,可以更加精准地获取目标数据。详细说明如下:
目前定向网络爬虫在数据采集工作时,需要针对不同网站的页面结构和特点,人工构造不同的爬虫程序,也就是,对不同网站中的每个爬虫入口链接,都需要人工构造各自单独的爬虫程序,比如,5个不同网站,需要写5个爬虫程序。然后人工运行构造各自单独的爬虫程序,从而抓取目标数据。
这种方式虽然实现了抓取目标数据,但会存在如下问题:
当需要抓取的网站数量较多时,由于在定向网络爬虫完成目标数据抓取过程中,构造不同网站各自单独的爬虫程序,导致人工工作量较大及代码复用率较低的问题,也影响目标数据的抓取进度。
发明内容
本发明实施例的目的在于提供一种可定制的网络爬虫方法及***,用以解决现有技术中当需要抓取的网站数量较多时,由于在定向网络爬虫完成目标数据抓取过程中,构造不同网站各自单独的爬虫程序,导致人工工作量较大及代码复用率较低,也影响目标数据的抓取进度的技术问题。具体技术方案如下:
第一方面,本发明实施提供了可定制的网络爬虫方法,包括:
通过人工输入配置界面获取单个待生成爬虫任务的配置项;
利用所述配置项中的第一爬虫名称,查找为所述第一爬虫名称预先配置的网站静态配置文件,作为目标静态配置文件;
通过所述目标静态配置文件中包含的第一网站运行配置文件名称,查找为所述第一网站运行配置文件名称预先配置的网站运行配置文件,作为目标运行配置文件;
基于所述目标静态配置文件、所述目标运行配置文件及所述配置项,生成包含所述配置项的爬虫任务;
获取所述目标静态配置文件中包含的爬虫入口链接;
执行用于对所述爬虫入口链接进行目标数据抓取的爬虫任务。
进一步的,所述目标静态配置文件的配置项名称包括:包含第一爬虫名称的定义待爬网站爬虫的爬虫名称、包含第一网站运行配置文件名称的网站运行配置文件名称、爬虫入口链接及链接筛选规则中的一项或多项;
所述目标运行配置文件包括:多个网站运行配置文件,所述目标运行配置文件的配置项名称用于定义所述待生成爬虫任务运行所需的配置参数,所述所述目标运行配置文件的配置项名称包括:最大并行请求个数、下载延迟、超时时间、失败重试次数及间隔、最大爬取深度、重复请求过滤算法、日志级别、文件存储位置及最大并行处理抓取项个数中的一项或多项;
所述配置项包括所述待生成爬虫任务的第一爬虫名称、待生成爬虫任务运行模式、待生成爬虫任务运行时间间隔及待生成爬虫任务起止时间中的一项或多项。
进一步的,在所述获取所述目标静态配置文件中包含的爬虫入口链接之前,所述方法还包括:
利用所述爬虫任务中的第一爬虫名称,启动以所述第一爬虫名称命名的爬虫脚本,其中,
在确定所述爬虫任务在单个服务器运行时,检测当前服务器中的执行任务资源情况;
若所述当前服务器中的执行任务资源情况满足可执行条件,则通过在所述当前服务器上按照所述爬虫任务的第一爬虫名称,获取并启动以所述第一爬虫名称命名的爬虫脚本;
在确定所述爬虫任务为多个爬虫任务,并且各爬虫任务在分布式多台服务器运行时,检测所述多台服务器中运行的服务器的执行任务资源情况;
从所述多台服务器中运行的服务器,按照预设调度策略选择所述爬虫任务实际执行的服务器,并在所述实际执行的服务器上,按照所述爬虫任务的第一爬虫名称,获取并启动以所述第一爬虫名称命名的爬虫脚本;
所述执行用于对所述爬虫入口链接进行目标数据抓取的爬虫任务,包括:
利用所述爬虫脚本,执行用于对所述爬虫入口链接进行目标数据抓取的爬虫任务。
进一步的,在所述获取所述目标静态配置文件中包含的爬虫入口链接之后,所述方法还包括:
获取所述目标静态配置文件中包含的爬虫入口链接;
将所述爬虫入口链接作为待加入的待爬链接,并加入待爬队列中;
所述执行用于对所述爬虫入口链接进行目标数据抓取的爬虫任务,包括:
从所述待爬队列中取出队列头部的已有的待爬链接,向待爬网站发送异步请求;
接收由所述待爬网站针对所述异步请求返回的响应结果,其中,所述响应结果中包含目标数据。
进一步的,所述将所述爬虫入口链接作为待加入的待爬链接,并加入待爬队列中,包括:
将所述爬虫入口链接作为待加入的待爬链接;
判断所述待加入的待爬链接与待爬队列中已有的待爬链接是否重复;
若所述待加入的待爬链接与待爬队列中已有的待爬链接重复,则将所述待加入的待爬链接加入所述待爬队列中的同一优先级待爬链接的队列末尾,其中,所述待爬队列是按照各待爬链接被处理的优先级确定的。
进一步的,所述从所述待爬队列中取出队列头部的已有的待爬链接,向待爬网站发送异步请求,包括:
从所述待爬队列中取出队列头部的已有的待爬链接,并添加反爬虫组件在异步请求中,得到已添加异步请求;
向待爬网站发送所述已添加异步请求。
进一步的,在执行用于对所述爬虫入口链接进行目标数据抓取的爬虫任务之后,所述方法还包括:
在确定所述目标数据是需要继续访问的链接时,将所述继续访问的链接作为待加入的待爬链接,并加入待爬队列中;
在确定所述目标数据是详细页面内容时,对所述详细页面内容进行类型检测,确定检测类型;
加载所述配置项中所述检测类型的解析模版;
按照预定数据,通过所述检测类型的解析模版抽取所述检测类型的字段数据。
进一步的,所述基于所述目标静态配置文件、所述目标运行配置文件及所述配置项,生成包含所述配置项的爬虫任务,包括:
通过所述第一爬虫名称的配置项,对所述目标静态配置文件中配置项名称及各所述目标静态配置文件中配置项名称对应的配置项值进行读取;
获取所述目标静态配置文件的配置项名称及各所述目标静态配置文件中配置项名称对应的配置项值;
通过对所述目标运行配置文件的配置项名称以及各所述目标运行配置文件的配置项名称对应的配置项值进行读取;
获取所述目标运行配置文件的配置项名称以及各所述目标运行配置文件的配置项名称对应的配置项值;
将配置项名称和配置项名称对应的配置项值,生成以键值对的形式进行组织的字典,并将所述字典序列化为二进制串,作为生成包含所述配置项的爬虫任务,其中,所述配置项名称包括:所述目标静态配置文件中配置项名称以及所述目标运行配置文件的配置项名称,所述配置项名称对应的配置项值包括:各所述目标静态配置文件中配置项名称对应的配置项值,以及各所述目标运行配置文件的配置项名称对应的配置项值。
第二方面,本发明实施提供了可定制的网络爬虫***,包括:
配置模块,用于通过人工输入配置界面获取单个待生成爬虫任务的配置项;
网站静态配置文件处理模块,用于利用所述配置项中的第一爬虫名称,查找为所述第一爬虫名称预先配置的网站静态配置文件,作为目标静态配置文件;
网站运行配置文件处理模块,用于通过所述目标静态配置文件中包含的第一网站运行配置文件名称,查找为所述第一网站运行配置文件名称预先配置的网站运行配置文件,作为目标运行配置文件;
爬虫任务生成模块,用于基于所述目标静态配置文件、所述目标运行配置文件及所述配置项,生成包含所述配置项的爬虫任务;
获取模块,用于获取所述目标静态配置文件中包含的爬虫入口链接;
爬虫引擎模块,用于执行用于对所述爬虫入口链接进行目标数据抓取的爬虫任务。
进一步的,所述目标静态配置文件的配置项名称包括:包含第一爬虫名称的定义待爬网站爬虫的爬虫名称、包含第一网站运行配置文件名称的网站运行配置文件名称、爬虫入口链接及链接筛选规则中的一项或多项;
所述目标运行配置文件包括:多个网站运行配置文件,所述目标运行配置文件的配置项名称用于定义所述待生成爬虫任务运行所需的配置参数,所述所述目标运行配置文件的配置项名称包括:最大并行请求个数、下载延迟、超时时间、失败重试次数及间隔、最大爬取深度、重复请求过滤算法、日志级别、文件存储位置及最大并行处理抓取项个数中的一项或多项;
所述配置项包括所述待生成爬虫任务的第一爬虫名称、待生成爬虫任务运行模式、待生成爬虫任务运行时间间隔及待生成爬虫任务起止时间中的一项或多项。
第三方面,本发明实施提供了一种终端设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现第一方面所述的方法步骤。
第四方面,本发明实施提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面任一的方法。
本发明实施例提供的可定制的网络爬虫方法及***,通过人工输入配置界面获取单个待生成爬虫任务的配置项;利用配置项中的第一爬虫名称,为第一爬虫名称查找预先配置的网站静态配置文件,作为目标静态配置文件;通过目标静态配置文件中包含的第一网站运行配置文件名称,为第一网站运行配置文件名称查找预先配置的网站运行配置文件,作为目标运行配置文件;基于目标静态配置文件、目标运行配置文件及配置项,生成包含配置项的爬虫任务;获取目标静态配置文件中包含的爬虫入口链接;执行用于对爬虫入口链接进行目标数据抓取的爬虫任务。
由此可见,通过统一的人工输入配置界面,配置各自的配置项,并利用配置项中的第一爬虫名称,查找目标静态配置文件及目标运行配置文件,进而自动地生成爬虫任务。相较于现有技术,不需要对不同的爬虫入口链接,人工构造各自单独的爬虫程序,减少了人工的工作量,也提高了代码的复用率,还减少了对抓取目标数据的抓取进度的影响。
当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的可定制的网络爬虫方法的流程示意图;
图2为本发明实施例的可定制的网络爬虫***的结构示意图;
图3为本发明实施例提供的终端设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
针对现有技术的当需要抓取的网站数量较多时,由于在定向网络爬虫完成目标数据抓取过程中,构造不同网站各自单独的爬虫程序,从而导致人工工作量较大及代码复用率较低,也影响目标数据的抓取进度的问题,本发明实施例提供一种可定制的网络爬虫方法,采用如下步骤,可以对不同的爬虫任务,通过统一的人工输入配置界面,配置各自的配置项,并利用配置项中的第一爬虫名称,查找目标静态配置文件及目标运行配置文件,进而自动地生成爬虫任务:
通过人工输入配置界面获取单个待生成爬虫任务的配置项;利用配置项中的第一爬虫名称,为第一爬虫名称查找预先配置的网站静态配置文件,作为目标静态配置文件;通过目标静态配置文件中包含的第一网站运行配置文件名称,为第一网站运行配置文件名称查找预先配置的网站运行配置文件,作为目标运行配置文件;基于目标静态配置文件、目标运行配置文件及配置项,生成包含配置项的爬虫任务;获取目标静态配置文件中包含的爬虫入口链接;执行用于对爬虫入口链接进行目标数据抓取的爬虫任务。
由此可见,相较于现有技术,不需要对不同的爬虫入口链接,人工构造各自单独的爬虫程序,减少了人工的工作量,也提高了代码的复用率,还减少了对抓取目标数据的抓取进度的影响。
首先,为了方便理解本发明实施例,在此先介绍一下本发明实施例中下文的使用术语“第一爬虫名称”、“第一网站运行配置文件名称”及“目标数据”等。
本发明实施例中的术语的“第一”和“第二”只是为了进行区别,并没有顺序限定。其中,第一爬虫名称可以是指待生成爬虫任务自己的爬虫名称。第一网站运行配置文件名称可以是指待生成爬虫任务自己所需的网站运行配置文件所命名的名称。目标数据可以是指本发明实施例中最终需要爬虫的内容,具体的目标数据的内容是根据实际情况决定的。
下面继续对本发明实施例提供的一种可定制的网络爬虫方法进行介绍。
本发明实施例所提供的可定制的网络爬虫方法,可以但不限于应用于计算机、智能手机、平板电脑等能够实现数据抓取功能的终端设备上。进一步的,所述终端设备可以但不限于为服务器。
如图1所示,本发明实施例所提供的可定制的网络爬虫方法,该方法可以包括如下步骤:
步骤110,通过人工输入配置界面获取单个待生成爬虫任务的配置项。
其中,人工输入配置界面用于配置待生成爬虫任务的配置项。一般人工输入配置界面可以用于统一配置所需待生成各爬虫任务各自的配置项,每次可以配置的待生成爬虫任务的数量可以但不限于为一个。
配置项可以是用于完成对待生成爬虫任务的所需配置的参数。其中,配置项可以但不限于包括:待生成爬虫任务的第一爬虫名称、待生成爬虫任务运行模式、待生成爬虫任务运行时间间隔及待生成爬虫任务起止时间中的一项或多项。其中,待生成爬虫任务运行模式可以但不限于包括:实时监控运行模式或抓取历史数据运行模式。配置项还可以但不限于包括:是否分布式运行及运行时间窗口中的一项或多项。
步骤120,利用配置项中的第一爬虫名称,查找为第一爬虫名称预先配置的网站静态配置文件,作为目标静态配置文件。
其中,目标静态配置文件包含于静态配置文件,网站静态配置文件是所有网站静态配置文件的统称,其中网站静态配置文件为每个网站爬虫独立拥有。
所述目标静态配置文件的配置项名称可以但不限于包括:包含第一爬虫名称的定义待爬网络爬虫的爬虫名称、包含第一网站运行配置文件名称的网站运行配置文件名称、爬虫入口链接及链接筛选规则中的一项或多项。其中,链接筛选规则可以是指不同类型页面的链接筛选规则,比如正则表达式。进一步的,链接筛选规则为一个或一组正则表达式,用于从网络页面中筛选需要继续爬取的统一资源定位符(Uniform Resource Locator,简称URL)。其中,包含第一爬虫名称的定义待爬网络爬虫的爬虫名称,一般可以是指网站名称。链接映射规则为至少一个用于匹配的正则表达式到其对应的页面爬取单元名称的多对一映射,用于确定需要爬取的网络页面对应的执行逻辑。
步骤130,通过目标静态配置文件中包含的第一网站运行配置文件名称,查找为第一网站运行配置文件名称预先配置的网站运行配置文件,作为目标运行配置文件。
为了能够得到目标运行配置文件,本步骤130进一步包括:通过解析目标静态配置文件,获取目标静态配置文件的配置项,通过目标静态配置文件中的第一网站运行配置文件名称,找到查找为第一网站运行配置文件名称预先配置的网站运行配置文件,作为目标运行配置文件。
上述目标运行配置文件所配置的配置项,用于控制爬虫的实现过程,其中,所述目标运行配置文件可以但不限于包括:多个网站运行配置文件,目标运行配置文件的配置项名称用于定义所述待生成爬虫任务运行所需的配置参数,目标运行配置文件的配置项名称包括:最大并行请求个数、下载延迟、超时时间、失败重试次数及间隔、最大爬取深度、重复请求过滤算法、日志级别、文件存储位置及最大并行处理抓取项个数中的一项或多项。其中,文件存储位置可以是指:日志级别的存储位置、图片文件的存储位置。
其中,最大并行请求个数可以是用于定义单个爬虫中同时存在的异步请求的最大个数。下载延迟可以是用于指定下载同一个网站下一个页面前需要等待的时间。超时时间可以是用于指定发送请求后到获取响应的最大等待时间,超时则重试或丢弃。不予处理的超文本传输协议(Hyper Text Transfer Protocol,简称HTTP)代码可以是用于指定响应中不需要进入页面处理单元进行处理直接丢弃的HTTP代码。失败重试次数及重试间隔可以是用于指定收到HTTP403响应后的重试次数和两次重试之间的时间。最大爬取深度可以是用于指定爬取网站最大允许的深度值,如果最大爬取深度为0,则没有限制。重复请求过滤算法可以是用于指定是否过滤重复URL以及过滤算法,日志级别可以是调试DEBUG,信息INFO,警告WARN,错误ERROR,其中,信息INFO用于打印程序应该出现的正常状态信息,便于追踪定位;警告WARN表明***出现轻微的不合理但不影响运行和使用;错误ERROR表明出现了***错误和异常,无法正常完成目标操作。文件存储位置可以是用于指定日志级别和日志存储的绝对路径。图片及文件下载位置可以是用于指定图片或其他文件下载的绝对路径,其中图片保存在该路径下的图image目录,视频保存在视频video目录,其他文件保存在文件file目录。
可选的,所述目标运行配置文件的配置项名称可以但不限于还包括:超时时间、反爬组件名称、管道组件名称、最大并行处理数据个数、管道组件的处理优先级、警报通知邮箱列表及文件下载位置中的一项或多项。
其中,可选的反爬中间件名称及反爬中间件名称优先级可以是用于选择***提供的反爬组件和对应优先级。可选的管道组件名称及管道组件的处理优先级可以是用于选择***提供或用户自定义的管道组件和对应优先级。最大并行处理数据个数可以是用于指定管道组件开启的最大线程数。可选的警报通知邮箱列表用于指定出现ERROR级别日志时发送日志信息的发送者邮箱账号密码和接受者邮箱。
上述目标运行配置文件包含于网站运行配置文件内,网站运行配置文件是所有网站运行配置文件的统称,网站运行配置文件的配置方式可以但不限于如下方式:
基于实际爬虫中的抓取行为为相近的网络爬虫,设置统一的运行配置文件,形成网站静态配置文件与网站运行配置文件之间的关系为多对一的关系。实际爬虫中的抓取行为为相近的网络爬虫可以是指相近的网络爬虫之间具有共性的内容,比如,共性的内容可以但不限于是指网页类型相同。示例性一,网页类型可以但不限于是指按照语言类型分类的网页类型,语言类型比如是英文语言的网站。示例性二,网页类型可以但不限于是指按照网络功能分类的网页类型,网络功能比如是社交网站或者网络功能再比如是购物网站。
步骤140,基于目标静态配置文件、目标运行配置文件及配置项,生成包含配置项的爬虫任务。
本步骤140的进一步包括:第一步,通过第一爬虫名称的配置项,对目标静态配置文件中配置项名称及各目标静态配置文件中配置项名称对应的配置项值进行读取;
第二步,获取目标静态配置文件的配置项名称及各目标静态配置文件中配置项名称对应的配置项值;
第三步,通过对目标运行配置文件的配置项名称以及各目标运行配置文件的配置项名称对应的配置项值进行读取;
第四步,获取目标运行配置文件的配置项名称以及各目标运行配置文件的配置项名称对应的配置项值;
第五步,将配置项名称和配置项名称对应的配置项值,生成以键值对的形式进行组织的字典,并将字典序列化为二进制串,作为生成包含配置项的爬虫任务,其中,配置项名称包括:目标静态配置文件中配置项名称以及目标运行配置文件的配置项名称,配置项名称对应的配置项值包括:各目标静态配置文件中配置项名称对应的配置项值,以及各目标运行配置文件的配置项名称对应的配置项值。通过以上方式可以自动生成爬虫任务。
步骤150,获取目标静态配置文件中包含的爬虫入口链接。
为了能够对具有身份验证的网站进行爬虫,所述目标静态配置文件的配置项名称但不限于还可以包括:额外的表单信息。其中,一般额外的表单信息登包括:登录名和密码。
本发明实施例的步骤150进一步包括:在确定配置项中存在额外的表单信息时,按照表单信息登录验证通过,则获取目标静态配置文件中包含的爬虫入口链接。若存在额外表单信息,则以POST方式提交表单数据,并保持当前会话和cookie,然后继续获取爬虫入口链接。其中,POST方式是最常见的POST提交数据的方式。Cookie有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行一段时间session跟踪,而储存在用户本地终端上通常经过加密的数据。
在确定配置项中不存在额外的表单信息时,获取目标静态配置文件中包含的爬虫入口链接。这样可以完成对具有身份验证的网站进行验证登录后,完成对目标数据的抓取;对不需要验证的网站,直接对目标数据进行抓取。这样通过添加不同的可自定义组件,解决爬虫中可能出现的问题,使用户可以无需修改爬虫逻辑,简单地通过修改网站静态配置文件、网站运行配置文件,进而生成爬虫任务。
步骤160,执行用于对爬虫入口链接进行目标数据抓取的爬虫任务。
其中,目标数据可以为需要进行抓取的数据,本发明实施例的目标数据的应用场景可以但不限于为抓取新浪网和和讯网的债券新闻,包括新闻标题、发布时间、新闻正文等,并且保证抓取过程的高效和稳定。
本发明实施例中,通过统一的人工输入配置界面,配置各自的配置项,并利用配置项中的第一爬虫名称,查找目标静态配置文件及目标运行配置文件,进而自动地生成爬虫任务。相较于现有技术,不需要对不同的爬虫入口链接,人工构造各自单独的爬虫程序,减少了人工的工作量,也提高了代码的复用率,还减少了对抓取目标数据的抓取进度的影响。
为了能够实现爬虫任务的启动与运行,结合图1,本发明实施例还提供一种可定制的网络爬虫方法,在步骤150之前,所述方法还包括:
第141步骤,利用爬虫任务中的第一爬虫名称,启动以第一爬虫名称命名的爬虫脚本,此处的启动可以为唤醒,也可以为开始执行,具体根据实际情况而定。
其中,在确定爬虫任务在单个服务器运行时,检测当前服务器中的执行任务资源情况。执行任务资源情况可以但不限于包括:当前服务器的内存和中央处理器(CentralProcessing Unit,简称CPU)占用情况。
若当前服务器中的执行任务资源情况满足可执行条件,则通过在当前服务器上按照爬虫任务的第一爬虫名称,获取并启动以第一爬虫名称命名的爬虫脚本;其中,当前服务器中的执行任务资源情况满足可执行条件可以但不限于是指:执行任务资源大于预设阈值,比如,执行任务的内存大于预设阈值,这样可以保证这个爬虫任务的运行。预设阈值可以是根据用户需求进行设置,在此不再举例说明。
在确定爬虫任务为多个爬虫任务,并且各爬虫任务在分布式多台服务器运行时,检测多台服务器中运行的服务器的执行任务资源情况。在爬虫任务为多个爬虫任务,为了方便区分爬虫任务,可以为各爬虫任务设置唯一标识,送入爬虫任务等待队列中。
从多台服务器中运行的服务器,按照预设调度策略选择爬虫任务实际执行的服务器,并在实际执行的服务器上,按照爬虫任务的第一爬虫名称,获取并启动以第一爬虫名称命名的爬虫脚本。
对于上述第141步骤来说,一个完整的爬虫任务可以被一台服务器执行,一台服务器也可以执行一个完整的爬虫任务或多个完整的爬虫任务。每台服务器的执行步骤的过程可以是通过执行单元实现的,并且执行单元个数设置为该服务器内核个数,每个执行单元设置的最多执行任务个数和服务器的内存以及带宽正相关。
其中预设调度策略可以包括但不限于:单次执行、轮转分配策略、轮询策略和最少任务优先策略。单次执行可以是爬虫任务结束后将不再进行调度;轮转分配策略可以是按照当前服务器列表顺序直接将爬虫任务分配到下一个服务器,若已经到达服务器列表末尾,则转到服务器列表头部继续。轮询策略可以是调度器依次询问列表中的服务器,并将爬虫任务分配至第一个执行单元有空闲的服务器。最少任务优先策略可以是将爬虫任务分配至服务器列表中当前执行任务最少的服务器。
上述步骤160进一步的包括:
利用爬虫脚本,执行用于对爬虫入口链接进行目标数据抓取的爬虫任务。
本发明实施例中,在确定爬虫任务为多个爬虫任务,并且各爬虫任务在分布式多台服务器运行时,通过将爬虫任务分布到多台服务器处理,并通过人工输入配置界面获取单个待生成爬虫任务的配置项,实现爬虫的控制和目标数据的抽取。爬虫任务通过分布式任务队列发布,并被分配到多台服务器执行,结合***自带反爬组件,大大降低了爬虫被封禁的风险。并且,分布式***的不同模块之间完全解耦,方便用户进一步扩展,在保证了分布式***爬取效率和稳定性,同时针对用户实现了可定制的网站静态配置文件及网站运行配置文件,不受开发和运行环境限制,具有较强的普适性。
为了能够对爬虫入口链接进行处理,结合图1,本发明实施例还提供一种可定制的网络爬虫方法,在步骤150之后,所述方法还包括:
第151步骤,将爬虫入口链接作为待加入的待爬链接,并加入待爬队列中。
为了将爬虫入口链接加入待爬队列中方便处理和使用,可以采用如下任一种实现方式:
在一种实现方式中,上述第151步骤进一步包括:将爬虫入口链接作为待加入的待爬链接,并加入待爬队列中。这样可以避免遗漏任何爬虫入口链接。
在另一种实现方式中,上述第151步骤进一下包括:第1步,将爬虫入口链接作为待加入的待爬链接;第二步,判断待加入的待爬链接与待爬队列中已有的待爬链接是否重复,若是,即待加入的待爬链接与待爬队列中已有的待爬链接重复,则执行第三步;
其中,上述第二步可以采用如下任一种判断方式,判断待加入的待爬链接与待爬队列中已有的待爬链接是否重复:
在一种判断方式中,遍历待爬队列中已有的待爬链接,一一与待加入的待爬链接进行比对,判断待加入的待爬链接与待爬队列中已有的待爬链接是否重复。
在另一种判断方式中,通过链接重判算法,判断待加入的待爬链接与待爬队列中已有的待爬链接是否重复。使用链接重判算法,判断待加入的待爬链接与待爬队列中已有的待爬链接是否重复,得到的判断结果相对准确。其中,链接重判算法可以是哈希的数字签名算法和布隆过滤器算法,也可以是用户自定义算法。
第三步,将待加入的待爬链接加入待爬队列中的同一优先级待爬链接的队列末尾,其中,待爬队列是按照各待爬链接被处理的优先级确定的。待爬队列是按照各待爬链接被处理的优先级由高到低确定的。一般数字越大表明优先级越高。
这样判断待加入的待爬链接与待爬队列中已有的待爬链接是否重复,可以减少处理的负荷。
上述步骤160进一步包括:第161步骤,从待爬队列中取出队列头部的已有的待爬链接,向待爬网站发送异步请求;第162步骤,接收由待爬网站针对异步请求返回的响应结果,其中,响应结果中包含目标数据。其中,队列头部是指待爬队列中的队列头部。
上述第161步骤进一步包括:从待爬队列中取出队列头部的已有的待爬链接,并添加反爬虫组件在异步请求中,得到已添加异步请求;向待爬网站发送已添加异步请求。
反爬虫组件可以是根据用户需求进行设置的。每个异步请求中发送前,上述第161步骤添加反爬虫组件在异步请求中可以是指在异步请求的请求头部设置反爬虫组件,反爬虫组件用于对请求头部任何字段进行修改。其中,反爬虫组件可以但不限于为用户代理(UserAgent,简称UA)组件及cookie组件,通过UA组件从UA列表中随机选取一个对默认UA进行填充,通过代理网际协议地址(Internet Protocol Address,简称IP地址)组件对IP地址进行修改,通过cookie组件获取cookie并随请求发送。
反爬虫组件可以但不限于为访问频率控制组件及失败重试组件,可以通过访问频率控制组件随机选取访问间隔,通过失败重试组件对被拒绝的请求再次进行访问。
本发明实施例中,不需要对不同的爬虫入口链接,人工构造各自单独的爬虫程序,减少了人工的工作量,也提高了代码的复用率,还减少了对抓取目标数据的抓取进度的影响。并且,若出现爬虫被网站封禁的情况,可以通过反爬虫组件,减小封禁的风险,从而解决了传统的网络爬虫框架通常在单机运行且缺少应对目标网站反爬的方法,容易导致爬虫被封禁等问题。
结合图1,本发明实施例还提供一种可定制的网络爬虫方法,在步骤160之后,所述方法还包括:
第163步骤,确定目标数据是否是需要继续访问的链接,如是,也就是确定目标数据是需要继续访问的链接,则执行第164步骤;如否,也就是目标数据不是需要继续访问的网页链接,而是,目标数据是详细页面内容,则执行第165步骤;
第164步骤,将继续访问的链接作为待加入的待爬链接,并加入待爬队列中。
上述第164步骤中,若目标数据是需要继续访问的网页链接,则将继续访问的链接作为待加入的待爬链接,并加入待爬队列中;否则,也就是,目标数据是详细页面内容,所述方法还包括:将详细页面内容送入管道组件进一步处理;后期不断从待爬队列中获取下一个待爬链接并进行爬取,直到待爬队列中没有剩余待爬链接,即结束任务;管道组件将目标数据进行标准化处理后送入消息队列进行后续存储、清洗等处理。
第165步骤,在确定所述目标数据是详细页面内容时,对详细页面内容进行类型检测,确定检测类型;第166步骤,加载配置项中检测类型的解析模版;第167步骤,按照预定数据,通过检测类型的解析模版抽取检测类型的字段数据。其中,预定数据可以是根据用户需求进行设置的。
为了能够得到上述字段数据,上述第165步骤至第167步骤的具体实现方式如下:
在确定检测类型是json文本时,加载配置项中json解析模版,按照规定的数据结构,抽取json字段数据;其中,json是使用JavaScript语法来描述数据对象,但是json仍然独立于语言和平台。
在确定检测类型是超文本标记语言HTML文本时,加载配置项中HTML解析模版,分析文档对象模型(Document Object Model,简称DOM)树结构,并抽取指定字段数据。指定字段数据可以是根据用户需求进行设置的。
在确定以上两个模版不存在时,利用一个数据字段名称和对应正则表达式,加载匹配指定字段数据。json解析模版至少包含一个数据字段名称和对应数据类型;HTML解析目标至少包括一个数据字段名称和对应DOM树路径;正则解析模版至少包括一个数据字段名称和对应正则表达式。模版的定义不受开发环境限制,待解析字段和目标数据字段一致;根据不同的模版类型执行具体解析逻辑,不受具体解析模版限制,得到符合目标数据结构的解析结果。
第168步骤,判断待加入的待爬链接与待爬队列中已有的待爬链接是否重复,若是,即待加入的待爬链接与待爬队列中已有的待爬链接重复,则执行第169步骤;
第169步骤,若待加入的待爬链接与待爬队列中已有的待爬链接重复,则将待加入的待爬链接加入待爬队列中的同一优先级待爬链接的队列末尾,其中,待爬队列是按照各待爬链接被处理的优先级确定的。
上述第168步骤和第169步骤,分别与第152步骤中的第二步和第三步相同,在此不再详细赘述。
本发明实施例中,不需要对不同的爬虫入口链接,人工构造各自单独的爬虫程序,减少了人工的工作量,也提高了代码的复用率,还减少了对抓取目标数据的抓取进度的影响。并且,若出现爬虫被网站封禁的情况,可以通过反爬虫组件,减小封禁的风险,从而解决了传统的网络爬虫框架通常在单机运行且缺少应对目标网站反爬的方法,容易导致爬虫被封禁等问题。
下面继续对本发明实施例提供的可定制的网络爬虫***进行介绍。
如图2所示,本发明实施例还提供一种可定制的网络爬虫***,包括:
配置模块21,用于通过人工输入配置界面获取单个待生成爬虫任务的配置项;
网站静态配置文件处理模块22,用于利用所述配置项中的第一爬虫名称,查找为所述第一爬虫名称预先配置的网站静态配置文件,作为目标静态配置文件;
网站运行配置文件处理模块23,用于通过所述目标静态配置文件中包含的第一网站运行配置文件名称,查找为所述第一网站运行配置文件名称预先配置的网站运行配置文件,作为目标运行配置文件;
爬虫任务生成模块24,用于基于所述目标静态配置文件、所述目标运行配置文件及所述配置项,生成包含所述配置项的爬虫任务;
获取模块25,用于获取所述目标静态配置文件中包含的爬虫入口链接;
爬虫引擎模块26,用于执行用于对所述爬虫入口链接进行目标数据抓取的爬虫任务。
在本发明实施例中,通过统一的人工输入配置界面,配置各自的配置项,并利用配置项中的第一爬虫名称,查找目标静态配置文件及目标运行配置文件,进而自动地生成爬虫任务。相较于现有技术,不需要对不同的爬虫入口链接,人工构造各自单独的爬虫程序,减少了人工的工作量,也提高了代码的复用率,还减少了对抓取目标数据的抓取进度的影响。
在一种可能的实现方式中,所述目标静态配置文件的配置项名称包括:包含第一爬虫名称的定义待爬网站爬虫的爬虫名称、包含第一网站运行配置文件名称的网站运行配置文件名称、爬虫入口链接及链接筛选规则中的一项或多项;
所述目标运行配置文件包括:多个网站运行配置文件,所述目标运行配置文件的配置项名称用于定义所述待生成爬虫任务运行所需的配置参数,所述所述目标运行配置文件的配置项名称包括:最大并行请求个数、下载延迟、超时时间、失败重试次数及间隔、最大爬取深度、重复请求过滤算法、日志级别、文件存储位置及最大并行处理抓取项个数中的一项或多项;
所述配置项包括所述待生成爬虫任务的第一爬虫名称、待生成爬虫任务运行模式、待生成爬虫任务运行时间间隔及待生成爬虫任务起止时间中的一项或多项。
在一种可能的实现方式中,所述***还包括:
任务调度模块,用于在所述获取所述目标静态配置文件中包含的爬虫入口链接之前,利用所述爬虫任务中的第一爬虫名称,启动以所述第一爬虫名称命名的爬虫脚本,其中,
在确定所述爬虫任务在单个服务器运行时,检测当前服务器中的执行任务资源情况;
若所述当前服务器中的执行任务资源情况满足可执行条件,则通过在所述当前服务器上按照所述爬虫任务的第一爬虫名称,获取并启动以所述第一爬虫名称命名的爬虫脚本;
在确定所述爬虫任务为多个爬虫任务,并且各爬虫任务在分布式多台服务器运行时,检测所述多台服务器中运行的服务器的执行任务资源情况;
从所述多台服务器中运行的服务器,按照预设调度策略选择所述爬虫任务实际执行的服务器,并在所述实际执行的服务器上,按照所述爬虫任务的第一爬虫名称,获取并启动以所述第一爬虫名称命名的爬虫脚本;
所述执行用于对所述爬虫入口链接进行目标数据抓取的爬虫任务,包括:
利用所述爬虫脚本,执行用于对所述爬虫入口链接进行目标数据抓取的爬虫任务。
在一种可能的实现方式中,所述***还包括:
爬取控制模块,用于在所述获取所述目标静态配置文件中包含的爬虫入口链接之后,将所述爬虫入口链接作为待加入的待爬链接,并加入待爬队列中;
所述爬虫引擎模块,具体用于:
从所述待爬队列中取出队列头部的已有的待爬链接,向待爬网站发送异步请求;
接收由所述待爬网站针对所述异步请求返回的响应结果,其中,所述响应结果中包含目标数据。
在一种可能的实现方式中,所述爬取控制模块,具体用于:
将所述爬虫入口链接作为待加入的待爬链接;
判断所述待加入的待爬链接与待爬队列中已有的待爬链接是否重复;
若所述待加入的待爬链接与待爬队列中已有的待爬链接重复,则将所述待加入的待爬链接加入所述待爬队列中的同一优先级待爬链接的队列末尾,其中,所述待爬队列是按照各待爬链接被处理的优先级确定的。
在一种可能的实现方式中,所述所述爬虫引擎模块,具体用于:
从所述待爬队列中取出队列头部的已有的待爬链接,并添加反爬虫组件在异步请求中,得到已添加异步请求;
向待爬网站发送所述已添加异步请求。
在一种可能的实现方式中,所述***还包括:
列表页面爬取模块,用于在执行用于对所述爬虫入口链接进行目标数据抓取的爬虫任务之后,在确定所述目标数据是需要继续访问的链接时,将所述继续访问的链接作为待加入的待爬链接,并加入待爬队列中;
详情页面爬取模块,用于在确定所述目标数据是详细页面内容时,对所述详细页面内容进行类型检测,确定检测类型;
网页解析模块,用于加载所述配置项中所述检测类型的解析模版;按照预定数据,通过所述检测类型的解析模版抽取所述检测类型的字段数据。
在一种可能的实现方式中,所述爬虫任务生成模块,具体用于:
通过所述第一爬虫名称的配置项,对所述目标静态配置文件中配置项名称及各所述目标静态配置文件中配置项名称对应的配置项值进行读取;
获取所述目标静态配置文件的配置项名称及各所述目标静态配置文件中配置项名称对应的配置项值;
通过对所述目标运行配置文件的配置项名称以及各所述目标运行配置文件的配置项名称对应的配置项值进行读取;
获取所述目标运行配置文件的配置项名称以及各所述目标运行配置文件的配置项名称对应的配置项值;
将配置项名称和配置项名称对应的配置项值,生成以键值对的形式进行组织的字典,并将所述字典序列化为二进制串,作为生成包含所述配置项的爬虫任务,其中,所述配置项名称包括:所述目标静态配置文件中配置项名称以及所述目标运行配置文件的配置项名称,所述配置项名称对应的配置项值包括:各所述目标静态配置文件中配置项名称对应的配置项值,以及各所述目标运行配置文件的配置项名称对应的配置项值。
在一种可能的实现方式中,***还包括:数据通信模块,用于将任务调度过程、爬虫过程、数据存储过程解耦,异步处理数据,提高***吞吐量,利用分布式消息队列实现,包括生产者单元、消息队列和消费者单元。生产者单元用于将数据推送入消息队列,消费者单元用于异步地从消息队列中获取数据并处理,消息队列用于在传输过程中暂存数据,提供双向的通信渠道。
在一种可能的实现方式中,***还包括:在执行用于对所述爬虫入口链接进行目标数据抓取的爬虫任务之后,管道组件是根据执行优先级从详情页面爬取模块或上一级别管道组件获取目标数据,根据优先级顺序,提供用于检测必要和非必要数据字段是否存在的字段完整性检查组件,用于检查字段类型是否符合要求的数据字段类型检查组件以及用于对抽取的文本数据进行统一标签的标准化处理组件。可选的用于下载并存储数据字段中图片、视频和其他附件的图片及文件下载组件。可选的用于将目标数据以json文本的形式存储到磁盘的数据持久化组件。可选的用于将目标数据推送入消息队列方便后续处理、存储和分析的数据传输组件。
在一种可能的实现方式中,***还包括:在执行用于对所述爬虫入口链接进行目标数据抓取的爬虫任务之后,若需要将目标数据进行处理,则通过数据传输组件将目标数据序列化,启动生产者实例将生产者实例并推送入消息队列,对应队列的消费者实例从队列取出目标数据并将目标数据进行还原,用于后续处理。
下面继续对本发明实施例提供的终端设备进行介绍。
本发明实施例还提供了一种终端设备,如图3所示,包括处理器31、通信接口32、存储器33和通信总线34,其中,处理器31,通信接口32,存储器33通过通信总线34完成相互间的通信,
存储器33,用于存放计算机程序;
处理器31,用于执行存储器33上所存放的程序时,实现如下步骤:
通过人工输入配置界面获取单个待生成爬虫任务的配置项;
利用所述配置项中的第一爬虫名称,查找为所述第一爬虫名称预先配置的网站静态配置文件,作为目标静态配置文件;
通过所述目标静态配置文件中包含的第一网站运行配置文件名称,查找为所述第一网站运行配置文件名称预先配置的网站运行配置文件,作为目标运行配置文件;
基于所述目标静态配置文件、所述目标运行配置文件及所述配置项,生成包含所述配置项的爬虫任务;
获取所述目标静态配置文件中包含的爬虫入口链接;
执行用于对所述爬虫入口链接进行目标数据抓取的爬虫任务。
上述终端设备提到的通信总线可以是PCI(Peripheral ComponentInterconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端设备与其他设备之间的通信。
存储器可以包括RAM(Random Access Memory,随机存取存储器),也可以包括NVM(Non-Volatile Memory,非易失性存储器),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储***。
上述的处理器可以是通用处理器,包括CPU(Central Processing Unit,中央处理器)、NP(Network Processor,网络处理器)等;还可以是DSP(Digital Signal Processing,数字信号处理器)、ASIC(Application Specific Integrated Circuit,专用集成电路)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本发明实施例提供了一种计算机可读存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述的可定制的网络爬虫方法的步骤。
本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述的可定制的网络爬虫方法的步骤。
本发明实施例提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述的可定制的网络爬虫方法的步骤。
对于***/终端设备/存储介质/包含指令的计算机程序产品/计算机程序实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***/终端设备/存储介质/包含指令的计算机程序产品/计算机程序实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种可定制的网络爬虫方法,其特征在于,包括:
通过人工输入配置界面获取单个待生成爬虫任务的配置项;
利用所述配置项中的第一爬虫名称,查找为所述第一爬虫名称预先配置的网站静态配置文件,作为目标静态配置文件;
通过所述目标静态配置文件中包含的第一网站运行配置文件名称,查找为所述第一网站运行配置文件名称预先配置的网站运行配置文件,作为目标运行配置文件;
基于所述目标静态配置文件、所述目标运行配置文件及所述配置项,生成包含所述配置项的爬虫任务;
获取所述目标静态配置文件中包含的爬虫入口链接;
执行用于对所述爬虫入口链接进行目标数据抓取的爬虫任务;
所述获取所述目标静态配置文件中包含的爬虫入口链接包括:确定所述目标静态配置文件的配置项名称中是否存在额外的表单信息,如果存在,按照所述额外的表单信息登录验证通过后,获取所述目标静态配置文件中包含的爬虫入口链接;如果不存在,获取所述目标静态配置文件中包含的爬虫入口链接;所述额外的表单信息包括:登录名和密码。
2.如权利要求1所述的方法,其特征在于,
所述目标静态配置文件的配置项名称包括:包含第一爬虫名称的定义待爬网站爬虫的爬虫名称、包含第一网站运行配置文件名称的网站运行配置文件名称、爬虫入口链接及链接筛选规则中的一项或多项;
所述目标运行配置文件包括:多个网站运行配置文件,所述目标运行配置文件的配置项名称用于定义所述待生成爬虫任务运行所需的配置参数,所述目标运行配置文件的配置项名称包括:最大并行请求个数、下载延迟、超时时间、失败重试次数及间隔、最大爬取深度、重复请求过滤算法、日志级别、文件存储位置及最大并行处理抓取项个数中的一项或多项;
所述配置项包括所述待生成爬虫任务的第一爬虫名称、待生成爬虫任务运行模式、待生成爬虫任务运行时间间隔及待生成爬虫任务起止时间中的一项或多项。
3.如权利要求1或2所述的方法,其特征在于,在所述获取所述目标静态配置文件中包含的爬虫入口链接之前,所述方法还包括:
利用所述爬虫任务中的第一爬虫名称,启动以所述第一爬虫名称命名的爬虫脚本,其中,
在确定所述爬虫任务在单个服务器运行时,检测当前服务器中的执行任务资源情况;
若所述当前服务器中的执行任务资源情况满足可执行条件,则通过在所述当前服务器上按照所述爬虫任务的第一爬虫名称,获取并启动以所述第一爬虫名称命名的爬虫脚本;
在确定所述爬虫任务为多个爬虫任务,并且各爬虫任务在分布式多台服务器运行时,检测所述多台服务器中运行的服务器的执行任务资源情况;
从所述多台服务器中运行的服务器,按照预设调度策略选择所述爬虫任务实际执行的服务器,并在所述实际执行的服务器上,按照所述爬虫任务的第一爬虫名称,获取并启动以所述第一爬虫名称命名的爬虫脚本;
所述执行用于对所述爬虫入口链接进行目标数据抓取的爬虫任务,包括:
利用所述爬虫脚本,执行用于对所述爬虫入口链接进行目标数据抓取的爬虫任务。
4.如权利要求1或2所述的方法,其特征在于,在所述获取所述目标静态配置文件中包含的爬虫入口链接之后,所述方法还包括:
获取所述目标静态配置文件中包含的爬虫入口链接;
将所述爬虫入口链接作为待加入的待爬链接,并加入待爬队列中;
所述执行用于对所述爬虫入口链接进行目标数据抓取的爬虫任务,包括:
从所述待爬队列中取出队列头部的已有的待爬链接,向待爬网站发送异步请求;
接收由所述待爬网站针对所述异步请求返回的响应结果,其中,所述响应结果中包含目标数据。
5.如权利要求4所述的方法,其特征在于,所述将所述爬虫入口链接作为待加入的待爬链接,并加入待爬队列中,包括:
将所述爬虫入口链接作为待加入的待爬链接;
判断所述待加入的待爬链接与待爬队列中已有的待爬链接是否重复;
若所述待加入的待爬链接与待爬队列中已有的待爬链接重复,则将所述待加入的待爬链接加入所述待爬队列中的同一优先级待爬链接的队列末尾,其中,所述待爬队列是按照各待爬链接被处理的优先级确定的。
6.如权利要求4所述的方法,其特征在于,所述从所述待爬队列中取出队列头部的已有的待爬链接,向待爬网站发送异步请求,包括:
从所述待爬队列中取出队列头部的已有的待爬链接,并添加反爬虫组件在异步请求中,得到已添加异步请求;
向待爬网站发送所述已添加异步请求。
7.如权利要求1或2所述的方法,其特征在于,在执行用于对所述爬虫入口链接进行目标数据抓取的爬虫任务之后,所述方法还包括:
在确定所述目标数据是需要继续访问的链接时,将所述继续访问的链接作为待加入的待爬链接,并加入待爬队列中;
在确定所述目标数据是详细页面内容时,对所述详细页面内容进行类型检测,确定检测类型;
加载所述配置项中所述检测类型的解析模版;
按照预定数据,通过所述检测类型的解析模版抽取所述检测类型的字段数据。
8.如权利要求1或2所述的方法,其特征在于,所述基于所述目标静态配置文件、所述目标运行配置文件及所述配置项,生成包含所述配置项的爬虫任务,包括:
通过所述第一爬虫名称的配置项,对所述目标静态配置文件中配置项名称及各所述目标静态配置文件中配置项名称对应的配置项值进行读取;
获取所述目标静态配置文件的配置项名称及各所述目标静态配置文件中配置项名称对应的配置项值;
通过对所述目标运行配置文件的配置项名称以及各所述目标运行配置文件的配置项名称对应的配置项值进行读取;
获取所述目标运行配置文件的配置项名称以及各所述目标运行配置文件的配置项名称对应的配置项值;
将配置项名称和配置项名称对应的配置项值,生成以键值对的形式进行组织的字典,并将所述字典序列化为二进制串,作为生成包含所述配置项的爬虫任务,其中,所述配置项名称包括:所述目标静态配置文件中配置项名称以及所述目标运行配置文件的配置项名称,所述配置项名称对应的配置项值包括:各所述目标静态配置文件中配置项名称对应的配置项值,以及各所述目标运行配置文件的配置项名称对应的配置项值。
9.一种可定制的网络爬虫***,其特征在于,包括:
配置模块,用于通过人工输入配置界面获取单个待生成爬虫任务的配置项;
网站静态配置文件处理模块,用于利用所述配置项中的第一爬虫名称,查找为所述第一爬虫名称预先配置的网站静态配置文件,作为目标静态配置文件;
网站运行配置文件处理模块,用于通过所述目标静态配置文件中包含的第一网站运行配置文件名称,查找为所述第一网站运行配置文件名称预先配置的网站运行配置文件,作为目标运行配置文件;
爬虫任务生成模块,用于基于所述目标静态配置文件、所述目标运行配置文件及所述配置项,生成包含所述配置项的爬虫任务;
获取模块,用于获取所述目标静态配置文件中包含的爬虫入口链接;
爬虫引擎模块,用于执行用于对所述爬虫入口链接进行目标数据抓取的爬虫任务;
所述获取所述目标静态配置文件中包含的爬虫入口链接包括:确定所述目标静态配置文件的配置项名称中是否存在额外的表单信息,如果存在,按照所述额外的表单信息登录验证通过后,获取所述目标静态配置文件中包含的爬虫入口链接;如果不存在,获取所述目标静态配置文件中包含的爬虫入口链接;所述额外的表单信息包括:登录名和密码。
10.如权利要求9所述的***,其特征在于,
所述目标静态配置文件的配置项名称包括:包含第一爬虫名称的定义待爬网站爬虫的爬虫名称、包含第一网站运行配置文件名称的网站运行配置文件名称、爬虫入口链接及链接筛选规则中的一项或多项;
所述目标运行配置文件包括:多个网站运行配置文件,所述目标运行配置文件的配置项名称用于定义所述待生成爬虫任务运行所需的配置参数,所述目标运行配置文件的配置项名称包括:最大并行请求个数、下载延迟、超时时间、失败重试次数及间隔、最大爬取深度、重复请求过滤算法、日志级别、文件存储位置及最大并行处理抓取项个数中的一项或多项;
所述配置项包括所述待生成爬虫任务的第一爬虫名称、待生成爬虫任务运行模式、待生成爬虫任务运行时间间隔及待生成爬虫任务起止时间中的一项或多项。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910292891.5A CN110020062B (zh) | 2019-04-12 | 2019-04-12 | 一种可定制的网络爬虫方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910292891.5A CN110020062B (zh) | 2019-04-12 | 2019-04-12 | 一种可定制的网络爬虫方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110020062A CN110020062A (zh) | 2019-07-16 |
CN110020062B true CN110020062B (zh) | 2021-09-24 |
Family
ID=67191148
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910292891.5A Active CN110020062B (zh) | 2019-04-12 | 2019-04-12 | 一种可定制的网络爬虫方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110020062B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110489626A (zh) * | 2019-08-05 | 2019-11-22 | 苏州闻道网络科技股份有限公司 | 一种信息采集方法和装置 |
CN110851681B (zh) * | 2019-10-12 | 2024-07-09 | 平安科技(深圳)有限公司 | 爬虫处理方法、装置、服务器及计算机可读存储介质 |
CN111414523A (zh) * | 2020-03-11 | 2020-07-14 | 中国建设银行股份有限公司 | 一种数据获取方法和装置 |
CN111310002B (zh) * | 2020-04-17 | 2023-04-07 | 西安热工研究院有限公司 | 一种基于分发器和配置表组合的泛型爬虫*** |
CN111666471A (zh) * | 2020-05-21 | 2020-09-15 | 平安科技(深圳)有限公司 | 信息采集方法、装置、计算机设备及存储介质 |
CN112100471A (zh) * | 2020-09-07 | 2020-12-18 | 北京明略软件***有限公司 | 分布式爬虫任务调度方法、装置、设备及计算机可读介质 |
CN112416551A (zh) * | 2020-11-19 | 2021-02-26 | 清创网御(合肥)科技有限公司 | 一种分布式爬虫调度*** |
CN113220703A (zh) * | 2021-05-31 | 2021-08-06 | 普瑞纯证医疗科技(广州)有限公司 | 一种基于大数据平台更新医疗数据的方法、服务器和*** |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105045838A (zh) * | 2015-07-01 | 2015-11-11 | 华东师范大学 | 基于分布式存储***的网络爬虫*** |
CN105243159A (zh) * | 2015-10-28 | 2016-01-13 | 福建亿榕信息技术有限公司 | 一种基于可视化脚本编辑器的分布式网络爬虫*** |
CN106897357A (zh) * | 2017-01-04 | 2017-06-27 | 北京京拍档科技股份有限公司 | 一种用于带验证分布式智能爬取网络信息的方法 |
CN109033115A (zh) * | 2017-06-12 | 2018-12-18 | 广东技术师范学院 | 一种动态网页爬虫*** |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2762544C (en) * | 2011-12-20 | 2019-03-05 | Ibm Canada Limited - Ibm Canada Limitee | Identifying requests that invalidate user sessions |
US9900371B2 (en) * | 2014-08-18 | 2018-02-20 | InfoTrust, LLC | Systems and methods for tag inspection |
CN106126648B (zh) * | 2016-06-23 | 2019-04-09 | 华南理工大学 | 一种基于重做日志的分布式商品信息爬虫方法 |
CN106933973A (zh) * | 2017-02-14 | 2017-07-07 | 广州优亿信息科技有限公司 | 一种可视化网络爬虫方法 |
CN107885777A (zh) * | 2017-10-11 | 2018-04-06 | 北京智慧星光信息技术有限公司 | 一种基于协作式爬虫的抓取网页数据的控制方法及*** |
CN109284430A (zh) * | 2018-09-07 | 2019-01-29 | 杭州艾塔科技有限公司 | 基于分布式架构的可视化主题网页内容爬取***及方法 |
CN109325161A (zh) * | 2018-09-11 | 2019-02-12 | 五八有限公司 | 舆情数据抓取方法、装置、设备及存储介质 |
-
2019
- 2019-04-12 CN CN201910292891.5A patent/CN110020062B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105045838A (zh) * | 2015-07-01 | 2015-11-11 | 华东师范大学 | 基于分布式存储***的网络爬虫*** |
CN105243159A (zh) * | 2015-10-28 | 2016-01-13 | 福建亿榕信息技术有限公司 | 一种基于可视化脚本编辑器的分布式网络爬虫*** |
CN106897357A (zh) * | 2017-01-04 | 2017-06-27 | 北京京拍档科技股份有限公司 | 一种用于带验证分布式智能爬取网络信息的方法 |
CN109033115A (zh) * | 2017-06-12 | 2018-12-18 | 广东技术师范学院 | 一种动态网页爬虫*** |
Non-Patent Citations (2)
Title |
---|
TARANTULA A Scalable and Extensible Web Spider;Saxena,Anshul等;《KMIS 2009: PROCEEDINGS OF THE INTERNATIONAL CONFERENCE ON KNOWLEDGE MANAGEMENT AND INFORMATION SHARING》;20091231;全文 * |
深度可定制的工具化爬虫***的设计与实现;李笑语;《中国优秀硕士学位论文全文数据库(电子期刊)信息科技辑》;20181130(第11期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110020062A (zh) | 2019-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110020062B (zh) | 一种可定制的网络爬虫方法及*** | |
CN107895009B (zh) | 一种基于分布式的互联网数据采集方法及*** | |
WO2016173200A1 (zh) | 用于检测恶意网址的方法和*** | |
CN107341395B (zh) | 一种拦截爬虫的方法 | |
CN109040252A (zh) | 文件传输方法、***、计算机设备和存储介质 | |
CN111552854A (zh) | 一种网页数据抓取方法、装置、存储介质和设备 | |
CN108667770B (zh) | 一种网站的漏洞测试方法、服务器及*** | |
US9754028B2 (en) | Automatic crawling of encoded dynamic URLs | |
CN107547490B (zh) | 一种扫描器识别方法、装置及*** | |
CN111404937B (zh) | 一种服务器漏洞的检测方法和装置 | |
CN106899549B (zh) | 一种网络安全检测方法及装置 | |
CN111106976B (zh) | 一种cdn网络的探测方法、装置、电子设备及可读存储介质 | |
CN114465741B (zh) | 一种异常检测方法、装置、计算机设备及存储介质 | |
CN114528457A (zh) | Web指纹检测方法及相关设备 | |
CN107766224B (zh) | 测试方法和测试装置 | |
KR102009020B1 (ko) | 검색 엔진으로 웹 사이트 인증 데이터를 제공하기 위한 방법 및 장치 | |
CN109862074B (zh) | 一种数据采集方法、装置、可读介质及电子设备 | |
CN107526748B (zh) | 一种识别用户点击行为的方法和设备 | |
WO2011137683A2 (zh) | Web应用托管方法及装置 | |
JP6763433B2 (ja) | 情報収集システム、情報収集方法、及び、プログラム | |
CN109246069B (zh) | 网页登录方法、装置和可读存储介质 | |
AU2018390863B2 (en) | Computer system and method for extracting dynamic content from websites | |
CN112000866A (zh) | 互联网数据分析方法、装置、电子装置及介质 | |
Noskov | Smart City Webgis Applications: Proof of Work Concept For High-Level Quality-Of-Service Assurance | |
CN114491210A (zh) | 一种基于网络爬虫的数据获取方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |