CN112667873A - 一种适用于多数网站通用采集数据的爬虫系统及方法 - Google Patents

一种适用于多数网站通用采集数据的爬虫系统及方法 Download PDF

Info

Publication number
CN112667873A
CN112667873A CN202011489232.XA CN202011489232A CN112667873A CN 112667873 A CN112667873 A CN 112667873A CN 202011489232 A CN202011489232 A CN 202011489232A CN 112667873 A CN112667873 A CN 112667873A
Authority
CN
China
Prior art keywords
crawler
data
task
crawling
crawled
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.)
Pending
Application number
CN202011489232.XA
Other languages
English (en)
Inventor
王勇
张可新
游若平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Duoying Shuzhi Technology Co ltd
Original Assignee
Beijing Huaruhuiyun Data Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Huaruhuiyun Data Technology Co ltd filed Critical Beijing Huaruhuiyun Data Technology Co ltd
Priority to CN202011489232.XA priority Critical patent/CN112667873A/zh
Publication of CN112667873A publication Critical patent/CN112667873A/zh
Pending legal-status Critical Current

Links

Images

Abstract

本发明公开了一种适用与多数网站通用采集数据的爬虫系统及方法,它能够避免因为其它解析操作浪费爬取时间,能使爬虫的效率达到最大。该系统包括任务存储和分发模块、爬虫后台和数据存储模块。本发明的有益效果在于:在整个爬虫系统开发完成后,只需要在添加配置各个网站及其采集规则后,不需要在改动源代码或是重复性编写程序的情况下爬取相对应的数据,减少重复性工作,提高在有新的需求或是网站变动时数据的采集效率,同时提高了系统的可维护性。

Description

一种适用于多数网站通用采集数据的爬虫系统及方法
技术领域
本发明属于网络通信技术领域,具体涉及一种适用于多数网站通用采集数据的爬虫系统及方法。
背景技术
目前大部分爬虫都是单一的针对固定网站的爬取,针对待爬取网站数量大,不固定的情况,这种方法会大大增加数据采集爬取的维护成本。现有的各种爬虫系统,根本思路都是对目标网站URL的请求,通过对返回的结果进行解析获取希望得到的数据,数据的请求和解析都是在爬虫内部完成的,同时多个单独爬虫的运行也是多个独立的进程,极大的增大计算机内存的开销。
现有公开的爬虫方法或爬虫系统有基于负载均衡分布式的、有针对数据采集后实时处理并统一管理的、有对网络爬虫系统构建多任务执行和调度的,还有其他通过网络爬虫动态获取不限定目标的网站数据的,但是大多数爬虫系统对使用人员的要求比较高,所以这样就极大地限制了爬虫的开发、维护和使用效率。
发明内容
本发明的目的在于提供一种适用与多数网站通用采集数据的爬虫系统及方法,它能够避免因为其它解析操作浪费爬取时间,能使爬虫的效率达到最大。
本发明的技术方案如下:一种适用于多数网站通用采集数据的爬虫系统,该系统包括任务存储和分发模块、爬虫后台和数据存储模块。
所述的任务存储和分发模块包括MongoDB数据库和redis数据库,redis数据库用来存放每个爬虫任务起始URL、待爬URL和已经采集数据的去重标识码,MongoDB数据库用来存放目标网站信息、爬取解析规则和网站信息;其中,redis数据库会在爬虫启动后,将从MongoDB数据库中获取到的需要爬取任务存放在自身的待爬队列中,然后逐个分发给空闲的爬虫任务爬取,MongoDB数据库将爬虫爬取时需要的解析规则分发给各个爬虫任务,供爬虫提取需要的数据。
所述的爬虫后台包括爬取模块、数据存储模块、异常捕获和处理模块;其中,爬取模块负责网站请求和源数据提取,数据存储模块负责把源数据通过整理好的格式存储到数据存储模块,异常捕获和处理模块负责在爬虫运行过程中将可能出现的报错或是其他影响爬虫运行的情况提供解决途径,防止爬虫中断运行。
所述的数据存储服务器包含solr数据库和MongoDB数据库,用来存储爬取到的数据内容,其中不同的数据库负责存储不同格式的数据和提供不同的访问形式,如文本信息数据和图片类型数据都将分开存储,数据内容的快速全文检索等。
一种适用于多数网站通用采集数据的爬虫的方法,包括如下步骤:
步骤1:通过可视化配置界面将需要爬取的网站的起始URL和网站信息存入爬虫任务存储和分发模块中的MongoDB数据库中,同时将每个网站对应的源码解析规则也存入MongoDB数据库;
步骤2:启动爬虫的起始文件,将起始URL从MongoDB数据库中取出并存入redis数据库自身的待爬队列,等待分发给空闲的爬虫任务爬取;同时启动创建进程池的方法,创建本机可运行最大、最优任务量的进程队列,形成多任务爬虫的后台系统;然后通过进程的任务分发机制分别将URL分配给不同的已启动空闲任务进行爬取,使每个创建的进程执行一个网站爬取任务;
步骤3:每个任务的爬虫在执行时通过线程池创建的逻辑方法,构建每个任务的自己独立的线程池,形成多任务、多线程爬取模式,并等待每个任务主线程中可以获取到的子网页URL进入线程队列;
步骤4:通过使用每个网站的唯一标识符定位,获取到在步骤1中配置好的源码解析规则中提取子网页URL的解析规则,动态获取网站内符合采集规则的URL,然后将提取到的URL放入redis数据库的待爬队列中,等待空闲爬虫任务的爬取;
步骤5:网页请求并获取响应结果;
步骤6:使用异常捕获和处理模块,在爬虫进行数据请求或是解析的过程中,如果遇到程序报错的情况,自动将遇到的错误进行接收并将日志记录在系统日志中,继续执行其他的功能;如果运行正常,则跳过异常处理模块,一直执行系统的请求和解析等功能,如此,则可以防止爬虫系统的中断;
步骤7:数据存储模块实时将爬取的网页源码存入redis数据库中,并将本次请求的URL编码后保存到去重队列中,用以防止再次爬取时的重复爬取;
步骤8:当一个网站爬取结束后,先关闭本次任务,然后判断待爬队列中是否为空,如果为空,在所有爬取任务爬取完毕后自动启动新一轮网站爬取,如果不为空,再启动新的爬取任务爬取其它待爬网站,重复执行步骤3到步骤8的过程;
步骤9:新一轮网站爬取时,会通过步骤1中设定好的网站信息中取得该网站的爬取范围和步骤7中保存在redis数据库去重队列中的信息排除太多久远的历史数据及已经爬取过的网页数据。
所述的步骤1中的MongoDB数据库是一个介于关系数据库和非关系数据库之间的基于分布式文件存储的数据库,其存储的数据结构由键值(key=>value)对组成,用来存储待爬的网站URL和各个网站解析规则,具有很高的扩展性和可读性。
所述的步骤4中通过使用每个网站的唯一标识符定位,获取到在步骤1中配置好的源码解析规则中提取子网页URL的解析规则。
本发明的有益效果在于:在整个爬虫系统开发完成(即设定完成统一的爬取逻辑)后,只需要在添加配置各个网站及其采集规则后,不需要在改动源代码或是重复性编写程序的情况下爬取相对应的数据,减少重复性工作,提高在有新的需求或是网站变动时数据的采集效率,同时提高了系统的可维护性。
附图说明
图1为本发明所提供的一种适用与多数网站通用采集数据的爬虫方法流程图。
具体实施方式
下面结合附图及具体实施例对本发明作进一步详细说明。
一种适用于多数网站通用采集数据的爬虫系统,该系统包括:任务存储和分发模块、爬虫后台、数据存储模块。
所述任务存储和分发模块包括MongoDB数据库和redis数据库,redis数据库用来存放每个爬虫任务起始URL、待爬URL和已经采集数据的去重标识码,MongoDB数据库用来存放目标网站信息、爬取解析规则和网站信息;其中,redis数据库会在爬虫启动后,将从MongoDB数据库中获取到的需要爬取任务存放在自身的待爬队列中,然后逐个分发给空闲的爬虫任务爬取,MongoDB数据库将爬虫爬取时需要的解析规则分发给各个爬虫任务,供爬虫提取需要的数据。
所述的爬虫后台包含爬取模块、数据存储模块、异常捕获和处理模块;其中,爬取模块负责网站请求和源数据提取,数据存储模块负责把源数据通过整理好的格式存储到数据存储模块,异常捕获和处理模块负责在爬虫运行过程中将可能出现的报错或是其他影响爬虫运行的情况提供解决途径,防止爬虫中断运行。
所述的数据存储模块包含solr数据库和MongoDB数据库。其中solr数据库是用来存储数据的索引信息,使用户可以在web端可视化查看爬取到的数据,使用solr搜索引擎提供存储在其他数据库中的数据内容的快速全文检索。
MongoDB数据库用来存储爬取到的数据内容,其中不同的数据库负责存储不同格式的数据和提供不同的访问形式,如文本信息数据和图片类型数据都将分开存储。而任务存储和分发模块包括MongoDB数据库在功能上是用来存储需要爬取的网站信息和网站爬取解析规则的,使用不同MongoDB数据库,在不同服务器中,分开存储的目的是为了保证在数据量很大时,频繁查询单个数据库会造成速度降低,加大内存开销。
如图1所示,一种适用于多数网站通用采集数据的爬虫方法,包括如下步骤:
步骤1:通过可视化配置界面将需要爬取的网站的起始URL和网站信息存入爬虫任务存储和分发模块中的MongoDB数据库中,同时将每个网站对应的源码解析规则也存入MongoDB数据库,MongoDB数据库是一个介于关系数据库和非关系数据库之间的基于分布式文件存储的数据库,其存储的数据结构由键值(key=>value)对组成,用来存储待爬的网站URL和各个网站解析规则,具有很高的扩展性和可读性;
步骤2:启动爬虫的起始文件,将起始URL从MongoDB数据库中取出并存入redis数据库自身的待爬队列,等待分发给空闲的爬虫任务爬取;同时启动创建进程池的方法,创建本机可运行最大、最优任务量的进程队列,形成多任务爬虫的后台系统;然后通过进程的任务分发机制分别将URL分配给不同的已启动空闲任务进行爬取,使每个创建的进程执行一个网站爬取任务;
步骤3:每个任务的爬虫在执行时都会通过线程池创建的逻辑方法,构建每个任务的自己独立的线程池,形成多任务、多线程爬取模式,并等待每个任务主线程中可以获取到的子网页URL进入线程队列;
步骤4:通过使用每个网站的唯一标识符定位,获取到在步骤1中配置好的源码解析规则中提取子网页URL的解析规则,动态获取网站内符合采集规则的URL,然后将提取到的URL放入redis数据库的待爬队列中,等待空闲爬虫任务的爬取;
步骤5:网页请求并获取响应结果;
步骤6:使用异常捕获和处理模块,在爬虫进行数据请求或是解析的过程中,如果遇到程序报错的情况,会自动将遇到错误的进行接收并将日志记录在系统日志中,继续执行其他的功能;如果运行正常,则跳过异常处理模块,一直执行系统的请求和解析等功能,如此,则可以防止爬虫系统的中断;
步骤7:数据存储模块实时将爬取的网页源码存入MongoDB数据库中,并将本次请求的URL编码后保存到去重队列中,用以防止再次爬取时的重复爬取;
步骤8:当一个网站爬取结束后,先关闭本次任务,然后判断待爬队列中是否为空,如果为空,在所有爬取任务爬取完毕后自动启动新一轮网站爬取,如果不为空,再启动新的爬取任务爬取其它待爬网站,重复执行步骤3到步骤8的过程;
步骤9:新一轮网站爬取时,会通过步骤1中设定好的网站信息中取得该网站的爬取范围和步骤7中保存在redis数据库去重队列中的信息排除太多久远的历史数据及已经爬取过的网页数据。

Claims (7)

1.一种适用于多数网站通用采集数据的爬虫系统,其特征在于:该系统包括任务存储和分发模块、爬虫后台和数据存储模块。
2.如权利要求1所述的一种适用于多数网站通用采集数据的爬虫系统,其特征在于:所述的任务存储和分发模块包括MongoDB数据库和redis数据库,MongoDB数据库用来存放目标网站信息、爬取解析规则和网站信息;其中,redis数据库会在爬虫启动后,将从MongoDB数据库中获取到的需要爬取任务存放在自身的待爬队列中,然后逐个分发给空闲的爬虫任务爬取,MongoDB数据库将爬虫爬取时需要的解析规则分发给各个爬虫任务,供爬虫提取需要的数据。
3.如权利要求1所述的一种适用于多数网站通用采集数据的爬虫系统,其特征在于:所述的爬虫后台包括爬取模块、数据存储模块、异常捕获和处理模块;其中,爬取模块负责网站请求和源数据提取,数据存储模块负责把源数据通过整理好的格式存储到数据存储模块,异常捕获和处理模块负责在爬虫运行过程中将可能出现的报错或是其他影响爬虫运行的情况提供解决途径,防止爬虫中断运行。
4.如权利要求1所述的一种适用于多数网站通用采集数据的爬虫系统,其特征在于:所述的数据存储服务器包含solr数据库和MongoDB数据库,用来存储爬取到的数据内容,其中不同的数据库负责存储不同格式的数据和提供不同的访问形式,如文本信息数据和图片类型数据都将分开存储,数据内容的快速全文检索等。
5.如权利要求1-4任一所述的一种适用于多数网站通用采集数据的爬虫系统的方法,其特征在于,包括如下步骤:
步骤1:通过可视化配置界面将需要爬取的网站的起始URL和网站信息存入爬虫任务存储和分发模块中的MongoDB数据库中,同时将每个网站对应的源码解析规则也存入MongoDB数据库;
步骤2:启动爬虫的起始文件,将起始URL从MongoDB数据库中取出并存入redis数据库自身的待爬队列,等待分发给空闲的爬虫任务爬取;同时启动创建进程池的方法,创建本机可运行最大、最优任务量的进程队列,形成多任务爬虫的后台系统;然后通过进程的任务分发机制分别将URL分配给不同的已启动空闲任务进行爬取,使每个创建的进程执行一个网站爬取任务;
步骤3:每个任务的爬虫在执行时通过线程池创建的逻辑方法,构建每个任务的自己独立的线程池,形成多任务、多线程爬取模式,并等待每个任务主线程中可以获取到的子网页URL进入线程队列;
步骤4:通过使用每个网站的唯一标识符定位,获取到在步骤1中配置好的源码解析规则中提取子网页URL的解析规则,动态获取网站内符合采集规则的URL,然后将提取到的URL放入redis数据库的待爬队列中,等待空闲爬虫任务的爬取;
步骤5:网页请求并获取响应结果;
步骤6:使用异常捕获和处理模块,在爬虫进行数据请求或是解析的过程中,如果遇到程序报错的情况,自动将遇到的错误进行接收并将日志记录在系统日志中,继续执行其他的功能;如果运行正常,则跳过异常处理模块,一直执行系统的请求和解析等功能,如此,则可以防止爬虫系统的中断;
步骤7:数据存储模块实时将爬取的网页源码存入redis数据库中,并将本次请求的URL编码后保存到去重队列中,用以防止再次爬取时的重复爬取;
步骤8:当一个网站爬取结束后,先关闭本次任务,然后判断待爬队列中是否为空,如果为空,在所有爬取任务爬取完毕后自动启动新一轮网站爬取,如果不为空,再启动新的爬取任务爬取其它待爬网站,重复执行步骤3到步骤8的过程;
步骤9:新一轮网站爬取时,会通过步骤1中设定好的网站信息中取得该网站的爬取范围和步骤7中保存在redis数据库去重队列中的信息排除太多久远的历史数据及已经爬取过的网页数据。
6.如权利要求5所述的一种适用于多数网站通用采集数据的爬虫方法,其特征在于:所述的步骤1中的MongoDB数据库是一个介于关系数据库和非关系数据库之间的基于分布式文件存储的数据库,其存储的数据结构由键值(key=>value)对组成,用来存储待爬的网站URL和各个网站解析规则,具有很高的扩展性和可读性。
7.如权利要求5所述的一种适用于多数网站通用采集数据的爬虫方法,其特征在于:所述的步骤4中通过使用每个网站的唯一标识符定位,获取到在步骤1中配置好的源码解析规则中提取子网页URL的解析规则。
CN202011489232.XA 2020-12-16 2020-12-16 一种适用于多数网站通用采集数据的爬虫系统及方法 Pending CN112667873A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011489232.XA CN112667873A (zh) 2020-12-16 2020-12-16 一种适用于多数网站通用采集数据的爬虫系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011489232.XA CN112667873A (zh) 2020-12-16 2020-12-16 一种适用于多数网站通用采集数据的爬虫系统及方法

Publications (1)

Publication Number Publication Date
CN112667873A true CN112667873A (zh) 2021-04-16

Family

ID=75406016

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011489232.XA Pending CN112667873A (zh) 2020-12-16 2020-12-16 一种适用于多数网站通用采集数据的爬虫系统及方法

Country Status (1)

Country Link
CN (1) CN112667873A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116361529A (zh) * 2023-06-01 2023-06-30 北京拓普丰联信息科技股份有限公司 一种爬虫监控的方法、装置、电子设备及存储介质
CN116821200A (zh) * 2023-07-04 2023-09-29 大师兄(上海)云数据服务有限公司 一种人工智能云数据可视化分析系统及其分析方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103970788A (zh) * 2013-02-01 2014-08-06 北京英富森信息技术有限公司 一种基于网页爬取的爬虫技术
CN105243159A (zh) * 2015-10-28 2016-01-13 福建亿榕信息技术有限公司 一种基于可视化脚本编辑器的分布式网络爬虫系统
US20170124497A1 (en) * 2015-10-28 2017-05-04 Fractal Industries, Inc. System for automated capture and analysis of business information for reliable business venture outcome prediction
CN107729564A (zh) * 2017-11-13 2018-02-23 北京众荟信息技术股份有限公司 一种分布式的聚焦网络爬虫网页爬取方法及系统
CN107895009A (zh) * 2017-11-10 2018-04-10 北京国信宏数科技有限责任公司 一种基于分布式的互联网数据采集方法及系统
CN108829792A (zh) * 2018-06-01 2018-11-16 成都康乔电子有限责任公司 基于scrapy的分布式暗网资源挖掘系统及方法
CN111209460A (zh) * 2019-12-27 2020-05-29 青岛海洋科学与技术国家实验室发展中心 基于scrapy爬虫框架的数据采集系统及方法
CN111222027A (zh) * 2020-01-02 2020-06-02 南京邮电大学 基于微服务架构的分布式网络爬虫数据提取系统及方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103970788A (zh) * 2013-02-01 2014-08-06 北京英富森信息技术有限公司 一种基于网页爬取的爬虫技术
CN105243159A (zh) * 2015-10-28 2016-01-13 福建亿榕信息技术有限公司 一种基于可视化脚本编辑器的分布式网络爬虫系统
US20170124497A1 (en) * 2015-10-28 2017-05-04 Fractal Industries, Inc. System for automated capture and analysis of business information for reliable business venture outcome prediction
CN107895009A (zh) * 2017-11-10 2018-04-10 北京国信宏数科技有限责任公司 一种基于分布式的互联网数据采集方法及系统
CN107729564A (zh) * 2017-11-13 2018-02-23 北京众荟信息技术股份有限公司 一种分布式的聚焦网络爬虫网页爬取方法及系统
CN108829792A (zh) * 2018-06-01 2018-11-16 成都康乔电子有限责任公司 基于scrapy的分布式暗网资源挖掘系统及方法
CN111209460A (zh) * 2019-12-27 2020-05-29 青岛海洋科学与技术国家实验室发展中心 基于scrapy爬虫框架的数据采集系统及方法
CN111222027A (zh) * 2020-01-02 2020-06-02 南京邮电大学 基于微服务架构的分布式网络爬虫数据提取系统及方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116361529A (zh) * 2023-06-01 2023-06-30 北京拓普丰联信息科技股份有限公司 一种爬虫监控的方法、装置、电子设备及存储介质
CN116361529B (zh) * 2023-06-01 2023-11-10 北京拓普丰联信息科技股份有限公司 一种爬虫监控的方法、装置、电子设备及存储介质
CN116821200A (zh) * 2023-07-04 2023-09-29 大师兄(上海)云数据服务有限公司 一种人工智能云数据可视化分析系统及其分析方法

Similar Documents

Publication Publication Date Title
CN107704539B (zh) 大规模文本信息批量结构化的方法及装置
CN112597373B (zh) 一种基于分布式爬虫引擎的数据采集方法
CN105243159A (zh) 一种基于可视化脚本编辑器的分布式网络爬虫系统
CN110134738B (zh) 分布式存储系统资源预估方法、装置
CN109753596B (zh) 用于大规模网络数据采集的信源管理与配置方法和系统
CN112667873A (zh) 一种适用于多数网站通用采集数据的爬虫系统及方法
CN104111958A (zh) 一种数据查询方法及装置
CN111400288A (zh) 数据质量检查方法及系统
CN110147470B (zh) 一种跨机房数据比对系统及方法
CN103810272A (zh) 一种数据处理方法和系统
CN113535677B (zh) 数据分析查询管理方法、装置、计算机设备及存储介质
CN107748748A (zh) 水利水电技术标准全文检索系统
CN113868248A (zh) 指标数据预聚合方法
CN109948015B (zh) 一种元搜索列表结果抽取方法及系统
CN113472881B (zh) 在线终端设备的统计方法和装置
CN116126950A (zh) 实时物化视图系统和方法
CN115168509A (zh) 风控数据的处理方法及装置、存储介质、计算机设备
CN109033196A (zh) 一种分布式数据调度系统及方法
CN115168297A (zh) 绕行日志审计方法及装置
CN113779026A (zh) 业务数据表的处理方法和装置
CN111914146A (zh) 一种便于大数据交互且自动提取的商务软件平台
CN113051329B (zh) 基于接口的数据采集方法、装置、设备及存储介质
CN110765129B (zh) 一种高性能的在线经费决算统计方法与装置
CN210804423U (zh) 一种网站信息采集发布平台系统
CN114817394A (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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20230802

Address after: No. 1367, 1st Floor, Building 1, Yard 2, Yongcheng North Road, Haidian District, Beijing, 100094

Applicant after: Beijing Duoying Shuzhi Technology Co.,Ltd.

Address before: 100094 room 201-1, 2 / F, complex building, 3 Yongjie North Road, Yongfeng Industrial base, Haidian District, Beijing

Applicant before: Beijing huaruhuiyun Data Technology Co.,Ltd.