CN113297449A - 一种流式爬虫实现方法及系统 - Google Patents
一种流式爬虫实现方法及系统 Download PDFInfo
- Publication number
- CN113297449A CN113297449A CN202110558553.9A CN202110558553A CN113297449A CN 113297449 A CN113297449 A CN 113297449A CN 202110558553 A CN202110558553 A CN 202110558553A CN 113297449 A CN113297449 A CN 113297449A
- Authority
- CN
- China
- Prior art keywords
- data stream
- crawler
- page
- component
- request data
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 70
- 230000008569 process Effects 0.000 claims abstract description 45
- 238000006243 chemical reaction Methods 0.000 claims abstract description 29
- 238000013507 mapping Methods 0.000 claims abstract description 28
- 238000010586 diagram Methods 0.000 claims abstract description 27
- 230000009193 crawling Effects 0.000 claims abstract description 26
- 238000010276 construction Methods 0.000 claims abstract description 20
- 230000000903 blocking effect Effects 0.000 claims abstract description 12
- 230000004044 response Effects 0.000 claims description 20
- 238000012545 processing Methods 0.000 claims description 17
- 238000000605 extraction Methods 0.000 claims description 11
- 235000014510 cooky Nutrition 0.000 claims description 7
- 238000004458 analytical method Methods 0.000 claims description 6
- 230000007246 mechanism Effects 0.000 claims description 6
- 230000014509 gene expression Effects 0.000 claims description 4
- 230000000644 propagated effect Effects 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 claims description 2
- 238000004891 communication Methods 0.000 claims description 2
- 238000004806 packaging method and process Methods 0.000 claims description 2
- 230000006798 recombination Effects 0.000 claims description 2
- 238000005215 recombination Methods 0.000 claims description 2
- 230000009466 transformation Effects 0.000 claims 3
- 239000003795 chemical substances by application Substances 0.000 description 11
- 238000001914 filtration Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 230000002688 persistence Effects 0.000 description 4
- 238000012216 screening Methods 0.000 description 3
- BUGBHKTXTAQXES-UHFFFAOYSA-N Selenium Chemical compound [Se] BUGBHKTXTAQXES-UHFFFAOYSA-N 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 229910052711 selenium Inorganic materials 0.000 description 2
- 239000011669 selenium Substances 0.000 description 2
- 230000001010 compromised effect Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013506 data mapping Methods 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
- G06F16/9566—URL specific, e.g. using aliases, detecting broken or misspelled links
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
技术领域
本发明涉及一种流式爬虫实现方法及系统,属于网络爬虫技术领域。
背景技术
随着网络数据的爆炸性增长,各个领域的人们对个性化数据的搜索的需求也随之增长,如何获取网络中有用的信息成为了各个领域的重要任务。对于网络数据的大规模获取,我们往往通过爬虫技术对网页进行爬取,并针对与特定页面的网页结构进行各自的解析,最后得到所需要的结构化或者半结构化数据。
爬虫通用的爬取方式,便是从一个初始的URL集合出发,下载URL对应的页面;并对页面内容进行解析,提取出相应的页面元素,以及页面上的链接,提取出来的页面元素便是所需要的数据;然后对页面链接进行过滤操作,获取所需要追踪的链接,将提取出的新链接放到任务队列中去;最后直到队列中没有新的链接,爬虫便会结束。
传统爬虫通常采用多线程同步模式进行爬取,每一个URL请求都对应一个线程进行处理,该线程负责页面的下载、解析、链接过滤等操作。在下载阶段,会进行相应的网络IO 操作,需要从网站获取响应页面,此时请求线程必须同步等待以获得响应。对于请求量不大的爬虫来说,多线程模型是可以接受的。但在负载大的情况下,该模式会消耗大量的内存,因为每个爬虫请求都要维护一个线程堆栈。持续的上下文切换也会导致大量的CPU时间损失,无法充分利用CPU资源。
现实世界中,爬虫除了由于大量网络IO造成CPU利用率低的问题之外,还存在各种问题,如登录验证、异常处理、数据定制化解析以及爬虫配置切换等。这些问题使得爬虫开发效率以及爬取数据的效率和质量大打折扣。而目前的爬虫框架鲜有考虑到爬虫开发以及爬虫运行效率的问题。
发明内容
发明目的:针对现有技术中存在的问题与不足,本发明提供一种基于响应式编程的流式爬虫实现方法及系统,提高爬虫开发效率、爬取效率以及系统资源利用率。
本发明通过分析待爬取网页数据结构,对数据对象进行建模,构建数据对象属性与页面元素之间的映射关系,同时定义URL追踪方式。然后对爬虫各个组件进行定义,构建爬虫处理流程图,执行爬虫获得响应式数据流。基于响应式数据流,对结构化数据进行过滤、筛选和数据持久化操作。
技术方案:一种基于响应式编程的流式爬虫实现方法,包括如下步骤:
(1)初始请求数据流的构建与配置
为爬虫的爬取定义数据对象模型,数据对象模型通过注解描述网站层次结构以及页面映射关系,依据数据对象模型构建初始请求数据流,并配置请求数据流来绕过网站反爬策略。
(2)爬虫数据流转换图的构建流程
通过响应式编程模型来构建爬虫数据流转换图,爬虫爬取的过程便是数据流转换的过程,从请求数据流到下载页面数据流,再到结果数据流;实现爬虫组件对数据流进行转化操作。
所述的请求数据流的构建与配置,包括以下流程:
步骤1,对象模型构建:根据层次模型对网站结构映射,基于注解模式生成对象模型。
步骤2,请求数据流生成:根据对象模型构造请求数据流,通过解析对象模型的注解来生成请求数据流。
步骤3,请求数据流配置:配置请求数据流,为每个请求数据流配置不同的代理IP,User Agent以及Cookies,来绕过网站的反爬策略。
所述的对象模型构建:根据层次树结构模版对网站结构进行映射,根节点表示主页面,中间内部节点表示列表页或者是导航页面,叶子节点表示目标页。使用注解描述网站的层次结构,描述了网站爬取的起始页面,爬取过程中的中间页面,以及需要解析的结果页面。并且通过注解描述目标页面的元素定位,使得对象模型属性与页面元素一一对应。
所述的请求数据流的生成:解析对象模型定义的相关注解,将起始种子URL封装成HTTP请求,构建起始请求数据流。然后提取出表示中间页面以及目标页面的注解中定义的正则表达式,匹配爬虫需要跟进的中间导航页面链接以及目标页面链接,封装成HTTP请求,导入到请求数据流中。
所述的请求数据流的配置:通过数据流组合的方式对爬虫进行配置,通过外部IP代理池构建代理IP数据流,将请求数据流以及代理IP流之间的数据重组,生成配置后的新数据流。User Agent以及Cookies也是通过数据流间的重组生成新的数据流来对请求数据流进行配置。
所述的爬虫数据流转换图的构建流程中,所述的响应式编程模型通过非阻塞的方式实现各个爬虫组件,爬虫组件间的数据传递均通过异步消息通信,使用隔离的工作线程池对下载器组件的阻塞代码进行异步处理,不会阻塞主流程的数据转换,而将非阻塞的爬虫代码运行在固定线程池中。
所述的爬虫数据流转换图的构建流程中,所述的爬虫组件包括:初始化组件、下载器组件、链接提取组件、对象映射组件以及中间过程中的数据处理组件等等。根据组件之间的数据依赖关系来编排爬虫组件之间的相互顺序,并且提供组件异常处理机制,最后构建爬虫数据流转换图。
所述的爬虫数据流转换图的构建流程中,所述的数据流包括请求数据流、下载页面数据流以及最后的结构化的对象数据流。下载页面数据流由请求数据流通过下载器组件转换后得到,对象数据流则是下载页面数据流通过链接提取组件以及对象映射组件转换得到。数据流符合响应式规范,结果数据流通过响应式关系型数据库连接(ReactiveRelational Database Connectivity)进行异步持久化存储。
所述的组件异常处理机制:异常处理通过hook模式来监听各个组件的运行状况,当数据流途经某个组件有异常事件抛出时,会截获该异常并加以处理。异常信息会封装成消息信号向下游传播,若下游没有定义异常处理,那么整个爬取流程将会终止。
一种基于响应式编程的流式爬虫系统,包括:
(1)初始请求数据流的构建与配置模块
为爬虫的爬取定义数据对象模型,数据对象模型通过注解描述网站层次结构以及页面映射关系,依据数据对象模型构建初始请求数据流,并配置请求数据流来绕过网站反爬策略。
(2)爬虫数据流转换图的构建流程模块
通过响应式编程模型来构建爬虫数据流转换图,爬虫爬取的过程便是数据流转换的过程,从请求数据流到下载页面数据流,再到结果数据流;实现爬虫组件对数据流进行转化操作。
所述的请求数据流的构建与配置模块,包括:
对象模型构建单元:根据层次模型对网站结构映射,基于注解模式生成对象模型。
请求数据流生成单元:根据对象模型构造请求数据流,通过解析对象模型的注解来生成请求数据流。
请求数据流配置单元:配置请求数据流,为每个请求数据流配置不同的代理IP,User Agent以及Cookies,来绕过网站的反爬策略。
有益效果:与现有技术相比,本发明提出的基于响应式的流式爬虫方法及系统,利用响应式编程模型,使得爬虫各个组件能够异步运行在不同的线程中,用更少的线程处理更高的负载。同时通过数据流配置模式可以很方便地处理对爬虫进行代理配置以及配置切换等问题。本发明相较于传统爬虫框架具有资源利用率高、爬取效率快以及爬虫开发简便等优点,可以应用于垂直细分领域的爬虫实现。
附图说明
图1为本发明方法的方案流程图;
图2为响应式爬虫编程模型图;
图3为下载器组件数据处理流程图;
图4为链接提取组件数据处理流程图;
图5为爬虫异常处理流程图。
具体实施方式
下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
基于响应式编程的流式爬虫实现方法,包括如下步骤:
步骤1、数据对象模型以及初始请求数据流的构建:根据层次树结构模版对网站结构进行映射,然后构造网站数据结构和对象模型之间的映射关系。根据网站数据结构和对象模型映射关系生成异步的请求数据流,并对请求数据流配置反反爬策略。
步骤2、爬虫数据流转换图的构建:定义爬虫流程所需要的各个组件,根据组件间的数据依赖关系编排组件顺序,执行爬虫将初始的请求数据流转化成结构化的对象数据流。
步骤3、基于步骤2得到的结构化的对象数据流,对结构化的对象数据进行过滤、筛选等操作,最后通过响应式关系型数据库连接进行数据持久化操作。
步骤1中首先通过分析待爬取网页数据结构,定义数据对象模型,构建网页数据与对象模型属性之间的映射关系,主要通过注解来实现待爬取的网页数据元素定位以及待爬取URL追踪。如图1所示,对于待爬取网页元素定位,通过注解Selector中的value属性来表示,映射信息包括页面元素的重叠样式表CSS选择器的选择值。通过注解StartUrls、InnerUrl以及TargetUrl描述数据爬取过程中后续URL的生成与跟随策略,首先根据StartUrls来构建初始请求数据流,InnerUrl描述链接的跟进策略,TargetUrl则描述目标数据页面的匹配,作为后续爬取的URL,重新导入到请求数据流中。同时通过代理IP数据流、User Agent流以及Cookies流与请求数据流的组合,来对每个请求进行配置,绕过网站的反爬策略。步骤2中对爬虫相关组件进行初始化,组件包括初始化组件、下载器组件、链接提取组件、对象映射组件、持久化组件以及中间过程中的数据处理组件等等。各个组件之间存在着依赖数据关系,根据依赖关系编排各个组件,最后构建出爬虫数据流转换图。步骤3中对最后得到的响应式数据流进行处理,最后异步存储到关系型数据库中。
本实施例以层数为三的网站为例,如图1所示,根据层次树模型构建网站的层次结构,然后再映射到对象模型Entity类中。类的注解StartUrls指向了网站的Home Page,InnerUrl则是匹配网站的内部页面,用来描述爬虫爬取过程中需要跟进的链接,TargetUrl则是指向了Leaf Page,表明这是目标数据页面。其中三个Selector注解则是与目标页面中的三个元素一一对应,通过Selector注解中的CSS选择器来将目标页面中的对应数据进行提取。之后通过Init组件根据对象模型初始化Request数据流。
对象模型映射、数据流初始化流程之后,便是爬虫数据流转换图构建阶段。爬虫组件的编排主要分成三个部分,第一部分是初始化数据流部分, 第二部分是对数据流的转换操作,最后是对结果数据流的订阅操作 。
爬虫组件均实现统一的接口,接口方法主要描述了数据如何处理,数据如何传给下游组件,各个组件之间存在一定的依赖关系。各个组件根据数据依赖关系进行组合,构建响应式爬虫处理流程图。利用构建的流程图生成相应的响应式数据流,在爬虫流程编排过程中,采用了Project Reactor响应式编程框架,构建了异步数据流;数据流从数据源出发,途径过滤组件、下载器组件、页面解析组件以及数据映射组件等,最后被订阅者消费。
图2展示了爬虫响应式编程模型,其中有两个相互隔离的工作线程池,线程池0 和线程池1。其中这两个线程池可以动态扩充,但是有界。考虑网页下载是阻塞操作,而Request 生成以及页面解析都是非阻塞操作,响应式爬虫编程模型将网页下载操作放在线程池1中进行异步执行,当数据下载完成后,通过消息驱动机制传递给下一级组件进行数据解析操作。非阻塞操作则在线程池0中执行。该编程模型将阻塞任务调度到有界线程池中执行,通过多个工作线程来处理非阻塞操作(页面解析、链接提取等等),与单线程事件循环爬虫编程模型相比,可以充分利用 CPU 多核的优势,提高爬虫爬取的效率。
过滤组件主要是对 Request 数据流本身数据的过滤,在爬虫爬取的过程中,需要对请求数据进行相应的筛选。最基本的是需要去重的处理,去重的方法多种多样,需要综合查重效率、内存使用量等多方面考虑。在本实施例中,内置了布隆过滤器对重复URL进行过滤处理,布隆过滤器自身存在的误报率,可能会使得一些本没有访问过的URL被误报为已经被访问过了,导致某些 Request 请求被直接跳过,但是对于爬虫数据爬取来说,一定程度的误报是可以接受的。
图3展示了下载器组件的数据处理流程,考虑到爬虫动态js页面解析问题。首先从上游组件节点中获取Request请求,通过传统的 HttpClient 库来请求网站网页数据,对于网站响应网页进行判断,查看爬取内容是否渲染成功,不然将通过 Selenium 下载器重新渲染页面,然后获得最终的页面数据,如此循环往复执行这样一个下载的流程。还有通过URL匹配的模式来甄别是否是动态网页,对于一个网站来说,其内部网站结构和网页布局一段时间内是稳定的,动态网页的 URL 具有一定的规律性,我们可以通过正则表达式的方式来识别动态网页,将它通过 Selenium 下载器去解析,得到渲染页面,而被识别为静态页面的网页则交给 HttpClient 下载器进行下载。
链接提取是爬虫流程的一个重要过程,如图4所示,其目的是从网页中抽取那些要被跟进的链接。对象模型中定义的InnerUrl注解,其中的属性定义了匹配链接的正则表达式,链接提取组件会将网页上的链接全部提取处理,并进行正则匹配,然后将提取处理的链接封装成 Request 数据流,异步导入到 Init 组件生成的数据流中。同时,链接提取组件可以重写解析逻辑,将用户自定义的链接提取逻辑加入进去。
对象映射组件是将获取到的网络页面给映射到具体的对象中,将网页上对应的数据装填到对象实例中。通过对象映射组件,将网页上的数据转换成了结构化或者半结构化的数据,方便后续组件的处理。对象映射的过程实质上是页面内容解析的过程,通过Selector 注解来提供映射关系。
异常处理通过hook模式来监听各个组件的运行状况。如图5所示,当某个组件有异常事件抛出时,会截获该异常并加以处理。异常处理过程类似于事件监听机制,整个爬虫是基于异步消息驱动,会将异常作为消息信号向下游传播,若下游未定义异常处理,那么整个爬取流程将会终止。
爬虫数据流转换图构建阶段是基于响应式编程的思想,利用Project Reactor第四代响应式编程库来构建了组件处理流程拓扑图,各组件均可异步非阻塞执行。最后得到结构化数据,可基于数据流进行数据查询、筛选、过滤以及持久化等操作。
基于响应式编程的流式爬虫系统,包括:
(1)初始请求数据流的构建与配置模块
为爬虫的爬取定义数据对象模型,数据对象模型通过注解描述网站层次结构以及页面映射关系,依据数据对象模型构建初始请求数据流,并配置请求数据流来绕过网站反爬策略。
(2)爬虫数据流转换图的构建流程模块
通过响应式编程模型来构建爬虫数据流转换图,爬虫爬取的过程便是数据流转换的过程,从请求数据流到下载页面数据流,再到结果数据流;实现爬虫组件对数据流进行转化操作。
所述的请求数据流的构建与配置模块,包括:
对象模型构建单元:根据层次模型对网站结构映射,基于注解模式生成对象模型。
请求数据流生成单元:根据对象模型构造请求数据流,通过解析对象模型的注解来生成请求数据流。
请求数据流配置单元:配置请求数据流,为每个请求数据流配置不同的代理IP,User Agent以及Cookies,来绕过网站的反爬策略。
本发明结合响应式编程思想,弥补了现有方法在构建爬虫时的不足,简化了爬虫模型的建模,使得爬虫的编写更加简洁。同时通过响应式编程对爬虫组件进行异步解耦,让每个单独组件都能够异步运行到隔离的线程中,可以增强吞吐量,提高系统的资源利用率。因此,本技术具有较高的应用价值。
Claims (10)
1.一种基于响应式编程的流式爬虫实现方法,其特征在于,包括如下步骤:
(1)初始请求数据流的构建与配置
为爬虫的爬取定义数据对象模型,数据对象模型通过注解描述网站层次结构以及页面映射关系,依据数据对象模型构建请求数据流,并配置请求数据流来绕过网站反爬策略;
(2)爬虫数据流转换图的构建流程
通过响应式编程模型来构建爬虫数据流转换图,爬虫爬取的过程便是数据流转换的过程,从请求数据流到下载页面数据流,再到结果数据流;实现爬虫组件对数据流进行转化操作。
2.根据权利要求1所述的基于响应式编程的流式爬虫实现方法,其特征在于,所述的请求数据流的构建与配置,包括以下流程:
步骤1,对象模型构建:根据层次模型对网站结构映射,基于注解模式生成对象模型;
步骤2,请求数据流生成:根据对象模型构造请求数据流,通过解析对象模型的注解来生成请求数据流;
步骤3,请求数据流配置:配置请求数据流,为每个请求数据流配置不同的代理IP,UserAgent以及Cookies,来绕过网站的反爬策略。
3.根据权利要求2所述的基于响应式编程的流式爬虫实现方法,其特征在于,所述的对象模型构建:根据层次树结构模版对网站结构进行映射,根节点表示主页面,中间内部节点表示列表页或者是导航页面,叶子节点表示目标页;使用注解描述网站的层次结构,描述了网站爬取的起始页面,爬取过程中的中间页面,以及需要解析的结果页面;
并且通过注解描述目标页面的元素定位,使得对象模型属性与页面元素一一对应。
4.根据权利要求2所述的基于响应式编程的流式爬虫实现方法,其特征在于,所述的请求数据流的生成:解析对象模型定义的相关注解,将起始种子URL封装成HTTP请求,构建起始请求数据流;然后提取出表示中间页面以及目标页面的注解中定义的正则表达式,匹配爬虫需要跟进的中间导航页面链接以及目标页面链接,封装成HTTP请求,导入到请求数据流中。
5.根据权利要求2所述的基于响应式编程的流式爬虫实现方法,其特征在于,所述的请求数据流的配置:通过数据流组合的方式对爬虫进行配置,通过外部IP代理池构建代理IP数据流,将请求数据流以及代理IP流之间的数据重组,生成配置后的新数据流;User Agent以及Cookies也是通过数据流间的重组生成新的数据流来对请求数据流流进行配置。
6.根据权利要求1所述的基于响应式编程的流式爬虫实现方法,其特征在于,所述的爬虫数据流转换图的构建流程中,所述的响应式编程模型通过非阻塞的方式实现各个爬虫组件,爬虫组件间的数据传递均通过异步消息通信,使用隔离的工作线程池对下载器组件的阻塞代码进行异步处理,而将非阻塞的爬虫代码运行在固定线程池中。
7.根据权利要求1所述的基于响应式编程的流式爬虫实现方法,其特征在于,所述的爬虫数据流转换图的构建流程中,所述的爬虫组件包括:初始化组件、下载器组件、链接提取组件、对象映射组件以及中间过程中的数据处理组件;根据组件之间的数据依赖关系来编排爬虫组件之间的相互顺序,并且提供组件异常处理机制,最后构建爬虫数据流转换图。
8.根据权利要求1所述的基于响应式编程的流式爬虫实现方法,其特征在于,所述的爬虫数据流转换图的构建流程中,所述的数据流包括请求数据流、下载页面数据流以及最后的结构化的对象数据流;
下载页面数据流由请求数据流通过下载器组件转换后得到,对象数据流则是下载页面数据流通过链接提取组件以及对象映射组件转换得到;数据流符合响应式规范,结果数据流通过响应式关系型数据库连接进行异步持久化存储。
9.根据权利要求7所述的基于响应式编程的流式爬虫实现方法,其特征在于,所述的组件异常处理机制:异常处理通过hook模式来监听各个组件的运行状况,当数据流途经某个组件有异常事件抛出时,会截获该异常并加以处理;异常信息会封装成消息信号向下游传播,若下游没有定义异常处理,那么整个爬取流程将会终止。
10.一种基于响应式编程的流式爬虫系统,其特征在于,包括:
(1)初始请求数据流的构建与配置模块
为爬虫的爬取定义数据对象模型,数据对象模型通过注解描述网站层次结构以及页面映射关系,依据数据对象模型构建请求数据流,并配置请求数据流来绕过网站反爬策略;
(2)爬虫数据流转换图的构建流程模块
通过响应式编程模型来构建爬虫数据流转换图,爬虫爬取的过程便是数据流转换的过程,从请求数据流到下载页面数据流,再到结果数据流;实现爬虫组件对数据流进行转化操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110558553.9A CN113297449A (zh) | 2021-05-21 | 2021-05-21 | 一种流式爬虫实现方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110558553.9A CN113297449A (zh) | 2021-05-21 | 2021-05-21 | 一种流式爬虫实现方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113297449A true CN113297449A (zh) | 2021-08-24 |
Family
ID=77323706
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110558553.9A Pending CN113297449A (zh) | 2021-05-21 | 2021-05-21 | 一种流式爬虫实现方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113297449A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113965555A (zh) * | 2021-10-21 | 2022-01-21 | 北京值得买科技股份有限公司 | 一种参数化爬虫下载方法、装置、设备及存储介质 |
US11675873B1 (en) | 2022-06-28 | 2023-06-13 | Lemon Inc. | Website similarity determination |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103533097A (zh) * | 2013-10-10 | 2014-01-22 | 北京京东尚科信息技术有限公司 | 一种网络爬虫下载解析方法及装置 |
CN105956175A (zh) * | 2016-05-24 | 2016-09-21 | 考拉征信服务有限公司 | 网页内容爬取的方法和装置 |
CN109033115A (zh) * | 2017-06-12 | 2018-12-18 | 广东技术师范学院 | 一种动态网页爬虫系统 |
CN109165333A (zh) * | 2018-07-12 | 2019-01-08 | 电子科技大学 | 一种基于网页数据的高速主题爬虫方法 |
CN109284430A (zh) * | 2018-09-07 | 2019-01-29 | 杭州艾塔科技有限公司 | 基于分布式架构的可视化主题网页内容爬取系统及方法 |
CN110147475A (zh) * | 2019-03-29 | 2019-08-20 | 汇通达网络股份有限公司 | 一种分布式部署的网络数据采集系统 |
CN110472126A (zh) * | 2018-05-10 | 2019-11-19 | 中国移动通信集团浙江有限公司 | 一种页面数据的获取方法、装置和设备 |
CN110555146A (zh) * | 2018-03-29 | 2019-12-10 | 中国科学院信息工程研究所 | 一种网络爬虫伪装数据的生成方法及系统 |
CN112199567A (zh) * | 2020-09-27 | 2021-01-08 | 深圳市伊欧乐科技有限公司 | 一种分布式数据采集方法、系统、服务器和存储介质 |
CN112597373A (zh) * | 2020-12-29 | 2021-04-02 | 科技谷(厦门)信息技术有限公司 | 一种基于分布式爬虫引擎的数据采集方法 |
-
2021
- 2021-05-21 CN CN202110558553.9A patent/CN113297449A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103533097A (zh) * | 2013-10-10 | 2014-01-22 | 北京京东尚科信息技术有限公司 | 一种网络爬虫下载解析方法及装置 |
CN105956175A (zh) * | 2016-05-24 | 2016-09-21 | 考拉征信服务有限公司 | 网页内容爬取的方法和装置 |
CN109033115A (zh) * | 2017-06-12 | 2018-12-18 | 广东技术师范学院 | 一种动态网页爬虫系统 |
CN110555146A (zh) * | 2018-03-29 | 2019-12-10 | 中国科学院信息工程研究所 | 一种网络爬虫伪装数据的生成方法及系统 |
CN110472126A (zh) * | 2018-05-10 | 2019-11-19 | 中国移动通信集团浙江有限公司 | 一种页面数据的获取方法、装置和设备 |
CN109165333A (zh) * | 2018-07-12 | 2019-01-08 | 电子科技大学 | 一种基于网页数据的高速主题爬虫方法 |
CN109284430A (zh) * | 2018-09-07 | 2019-01-29 | 杭州艾塔科技有限公司 | 基于分布式架构的可视化主题网页内容爬取系统及方法 |
CN110147475A (zh) * | 2019-03-29 | 2019-08-20 | 汇通达网络股份有限公司 | 一种分布式部署的网络数据采集系统 |
CN112199567A (zh) * | 2020-09-27 | 2021-01-08 | 深圳市伊欧乐科技有限公司 | 一种分布式数据采集方法、系统、服务器和存储介质 |
CN112597373A (zh) * | 2020-12-29 | 2021-04-02 | 科技谷(厦门)信息技术有限公司 | 一种基于分布式爬虫引擎的数据采集方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113965555A (zh) * | 2021-10-21 | 2022-01-21 | 北京值得买科技股份有限公司 | 一种参数化爬虫下载方法、装置、设备及存储介质 |
CN113965555B (zh) * | 2021-10-21 | 2024-04-12 | 北京值得买科技股份有限公司 | 一种参数化爬虫下载方法、装置、设备及存储介质 |
US11675873B1 (en) | 2022-06-28 | 2023-06-13 | Lemon Inc. | Website similarity determination |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108885632B (zh) | 用于实时数据流编程的高效状态机 | |
US7743382B2 (en) | System for deadlock condition detection and correction by allowing a queue limit of a number of data tokens on the queue to increase | |
CN111666296B (zh) | 基于Flink的SQL数据实时处理方法、装置、计算机设备和介质 | |
US20080208830A1 (en) | Automated transformation of structured and unstructured content | |
CN105243159A (zh) | 一种基于可视化脚本编辑器的分布式网络爬虫系统 | |
Bosse | Mobile multi-agent systems for the internet-of-things and clouds using the javascript agent machine platform and machine learning as a service | |
CN113297449A (zh) | 一种流式爬虫实现方法及系统 | |
CN113946321B (zh) | 计算逻辑的处理方法、电子设备和可读存储介质 | |
Eddelbuettel et al. | RProtoBuf: Efficient cross-language data serialization in R | |
Alawneh et al. | MTF: A scalable exchange format for traces of high performance computing systems | |
Maarouf et al. | XML integrated environment for service-oriented data management | |
CN111897572A (zh) | 一种数据处理方法、系统、计算机设备及可读存储介质 | |
Kalavri | Performance optimization techniques and tools for distributed graph processing | |
CN112650502A (zh) | 批处理任务处理方法、装置、计算机设备和存储介质 | |
Thor et al. | Cloudfuice: A flexible cloud-based data integration system | |
Iozzia | Hands-on Deep Learning with Apache Spark: Build and Deploy Distributed Deep Learning Applications on Apache Spark | |
US20230281040A1 (en) | Pipeline-based machine learning method and apparatus, electronic device, and computer readable storage medium | |
Yahia | A language-based approach for web service composition | |
US10931761B2 (en) | Interconnecting nodes of entity combinations | |
Bhawal | An MRQL Visualizer Using JSON Integration | |
Paller et al. | Modular code generation for creating IoT applications | |
Roun | Základní služby grafové databáze | |
US20150261864A1 (en) | Computer Systems and Method for Obtaining Produced Content | |
Paudel | Integration of Apache MRQL Query Language with Apache Storm Realtime Computational System | |
CN112287012A (zh) | 采用Spark SQL模式实现http接口调用方法 |
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 |