CN115329170A - 网页抓取方法、装置、设备以及存储介质 - Google Patents
网页抓取方法、装置、设备以及存储介质 Download PDFInfo
- Publication number
- CN115329170A CN115329170A CN202210846381.XA CN202210846381A CN115329170A CN 115329170 A CN115329170 A CN 115329170A CN 202210846381 A CN202210846381 A CN 202210846381A CN 115329170 A CN115329170 A CN 115329170A
- Authority
- CN
- China
- Prior art keywords
- target
- webpage
- grabbing
- configuration information
- preset
- 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
- 230000009193 crawling Effects 0.000 title claims abstract description 89
- 238000000034 method Methods 0.000 title claims abstract description 83
- 230000008569 process Effects 0.000 claims description 27
- 238000004891 communication Methods 0.000 claims description 24
- 230000004044 response Effects 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 11
- 230000008859 change Effects 0.000 claims description 7
- 230000000903 blocking effect Effects 0.000 claims description 4
- 238000012544 monitoring process Methods 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 abstract description 4
- 238000013473 artificial intelligence Methods 0.000 abstract description 3
- 241000271897 Viperidae Species 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 8
- 238000004458 analytical method Methods 0.000 description 5
- 238000009434 installation Methods 0.000 description 4
- 230000008676 import Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 241000239290 Araneae Species 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本公开提供了一种网页抓取方法、装置、设备以及存储介质。涉及人工智能领域,具体涉及云计算和企业应用技术,可应用于智能云场景下。具体实现方案为:按照优先级顺序获取目标配置信息;基于目标配置信息确定控制参数和待抓取的目标网页;基于控制参数,执行针对目标网页的抓取操作,得到目标网页的抓取结果。根据本公开的技术方案,能提高网页抓取的效率。
Description
技术领域
本公开涉及人工智能领域,具体涉及云计算和企业应用技术,可应用于智能云场景下。
背景技术
随着大数据时代的到来,网络爬虫技术成为不可或缺的一部分。网页抓取是从网站中提取内容和数据的过程。相关技术中,网页抓取流程繁琐,抓取效率较低。
发明内容
本公开提供了一种网页抓取方法、装置、设备以及存储介质。
根据本公开的第一方面,提供了一种网页抓取方法,应用于服务器,包括:
按照优先级顺序获取目标配置信息;
基于该目标配置信息确定控制参数和待抓取的目标网页;
基于该控制参数,执行针对该目标网页的抓取操作,得到该目标网页的抓取结果。
根据本公开的第二方面,提供了一种网页抓取装置,包括:
获取单元,用于按照优先级顺序获取目标配置信息;
第一确定单元,用于基于该目标配置信息确定控制参数和待抓取的目标网页;
抓取单元,用于基于该控制参数,执行针对该目标网页的抓取操作,得到该目标网页的抓取结果。
根据本公开的第三方面,提供了一种电子设备,包括:
至少一个处理器;以及
与该至少一个处理器通信连接的存储器;其中,
该存储器存储有可被该至少一个处理器执行的指令,该指令被该至少一个处理器执行,以使该至少一个处理器能够执行上述第一方面所提供的方法。
根据本公开的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,该计算机指令用于使该计算机执行上述第一方面所提供的方法。
根据本公开的第五方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序在被处理器执行时实现上述第一方面所提供的方法。
根据本公开的技术方案,能最简化网页抓取流程,提高网页抓取的效率。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本公开实施例的网页抓取方法的流程示意图一;
图2是根据本公开实施例的网页抓取方法的流程示意图二;
图3是根据本公开实施例的网页抓取的架构示意图;
图4是根据本公开实施例的网页抓取装置的结构示意图一;
图5是根据本公开实施例的网页抓取装置的结构示意图二;
图6是根据本公开实施例的网页抓取的场景示意图;
图7是用来实现本公开实施例的网页抓取方法的电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本公开的说明书实施例和权利要求书及上述附图中的术语"第一"、"第二"和"第三"等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。此外,术语"包括"和"具有"以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元。方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本公开实施例提供一种网页抓取方法,图1是根据本公开实施例的网页抓取方法的流程示意图,该网页抓取方法可以应用于网页抓取装置。该网页抓取装置位于电子设备。该电子设备包括但不限于固定设备和/或移动设备。例如,固定设备包括但不限于服务器,服务器可以是云服务器或普通服务器。例如,移动设备包括但不限于:手机、平板电脑、车载终端中的一项或是多项终端。在一些可能的实现方式中,该方法还可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。如图1所示,该网页抓取方法包括:
S101:按照优先级顺序获取目标配置信息;
S102:基于该目标配置信息确定控制参数和待抓取的目标网页;
S103:基于该控制参数,执行针对该目标网页的抓取操作,得到该目标网页的抓取结果。
本公开实施例中,优先级顺序是预设的获取配置信息的顺序。实际应用中,优先级的排序从高到低为:命令行参数、系统环境变量、配置文件。
本公开实施例中,命令行参数(Command line parameter)是命令行中给定的参数。
本公开实施例中,系统环境变量(environment variables)是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。系统环境变量是在操作系统中一个具有特定名字的对象,它包含了应用程序所将使用到的信息。这里,应用程序包括网页抓取工具(也可称为网页爬取工具)。
本公开实施例中,配置文件是用于配置网页抓取相关信息的文件。配置文件可以由用户通过终端提供的用户界面接口输入。在一些实施方式中,电子设备直接接收终端发送的配置文件。在另一些实施方式中,服务器接收其他设备转发的由终端确定的配置文件。本公开不对终端与服务器之间的通信方式进行限定。
本公开实施例中,目标配置信息是针对网页抓取的相关配置信息。目标配置信息包括但不限于控制参数和待抓取的目标网页。这里,控制参数是网页抓取工具的运行参数,具体可包括以下参数中的一种或几种:最大抓取深度、抓取间隔、超时时长、网页内容匹配条件、抓取的任务并发数量、种子文件路径、结果存放路径等。以上仅为示例性说明,不作为对控制参数全部可能的类型的限定,只是这里不做穷举。
这里,最大抓取深度是指在网页的原始链接的基础上许可的抓取层数。若不设置最大抓取深度,网页抓取工具发现一个链接时,会沿着链接路径一直抓取到最深一层,直到全部抓取完毕,返回最初页面抓取下一个链接。举例来说,若最大抓取深度=3,则网页抓取工具发现一个网页的链接时,会沿着链接路径一直抓取到该链接的第三层。
这里,抓取间隔是指抓取完成一个网页界面之后再隔多久进行抓取。
这里,超时时长是距离发出抓取请求的时长,该抓取请求是未成功返回抓取响应的抓取请求。可以理解为:一个链接抓取了多长时间还没有响应。
这里,网页内容匹配条件是预抓取的网页内容的条件。这里,网页内容匹配条件可根据用户需求进行设定或调整。实际应用中,网页内容匹配条件可由多个条件组成。比如,网页内容匹配条件包括N个条件,分别记为N1、N2、…、Nn,那么,若网页内容匹配条件要求同时满足这N个条件,则在网页内容1满足这N个条件时,抓取该网页内容1。若网页内容匹配条件要求满足这N个条件中任一条件,则在网页内容2满足这N个条件中任一条件如N1时,抓取该网页内容2。
这里,抓取的任务并发数量是指同一时间可执行的抓取任务的数量。
这里,种子文件记录有待抓取的网页的链接地址。待抓取的目标网页可根据种子文件确定。
这里,种子文件路径可以理解为种子文件的存储路径。
这里,结果存储路径包括网页抓取结果的存储路径。
本公开实施例中,网页抓取流程可通过运行网页抓取工具实现。该网页抓取工具是采用预设编程语言如go语言编写出的用于实现网页爬取的工具。
本公开实施例的技术方案,按照优先级顺序获取目标配置信息;基于该目标配置信息确定控制参数和待抓取的目标网页;基于该控制参数,执行针对该目标网页的抓取操作,得到该目标网页的抓取结果。如此,按照优先级顺序获取目标配置信息,实现了对网页抓取的动态配置,从而有助于提高网页抓取的效率。另外,通过多种方式获取目标配置信息,不仅增强了目标配置信息的来源多样性,满足对目标配置信息的定制化需求,还能使确定出的目标配置信息更准确,从而有助于提升抓取的数据的准确性。
在一些实施例中,如图2所示,该网页抓取方法还可包括:
S201:基于目标配置信息确定目标存储路径;
S202:将记录的网页抓取过程中的信息生成日志文件,并将日志文件存储至目标存储路径下。
在一些实施例中,上述的S201可以在S101之后执行,如可以和S102同时执行,或先于S102执行。上述的S202可以在S103的执行过程中执行,或者在S103之后执行。
这里,目标存储路径是日志的存储路径。实际应用中,目标存储路径可根据用户需求进行设定或调整。比如,将默认的存储路径C盘,更改为D盘。
这里,网页抓取过程中的信息,包括但不限于网页响应内容、状态码、网页编码格式、网页子链接、抓取错误信息等内容。
这里,日志文件可用于记录网页抓取工具从启动到关闭的所有过程信息。
在一些实施方式中,基于目标配置信息确定目标存储路径,包括:根据日志存储路径标识,从目标配置信息中查询得到目标存储路径。
需要说明的是,本公开不对具体如何根据网页抓取过程中的信息生成日志文件进行限定。本公开不对日志文件的文件格式进行限定。
如此,能够按照指定的存储路径存储日志文件,进而便于从该指定的存储路径快速获取日志文件,对日志文件进行分析,提供对日志文件的分析速度。
在一些实施例中,该网页抓取方法还可包括:确定抓取结果的数据类型;按照数据类型存储抓取结果。
这里,抓取结果包括网页内容。
这里,数据类型包括但不限于结构化类型和非结构化类型。
如此,能够使抓取结果得到分类存储,从而便于对所存储的抓取结果进行更快、更好的读取与分析。
在一些实施例中,抓取结果包括网页内容。按照数据类型存储抓取结果,包括:将数据类型为结构化数据的网页内容,存储至本地的第一数据库中;将数据类型为非结构化数据的网页内容,存储至本地的第二数据库中。
这里,第一数据库是适合存储结构化数据的数据库。比如,第一数据库包括但不限于关系型数据库,如MySQL。
这里,第二数据库是适合存储非结构化数据的数据库。比如,第二数据库包括但不限于非关系型数据库,如MongoDB数据库。
如此,通过将不同数据类型的网页内容分开存储,能够便于后续快速查找到网页内容,提高查找待分析的网页内容的效率,从而有助于提高对网页内容的分析效率。
在一些实施例中,抓取结果包括网页内容。该网页抓取方法还可包括:解析出网页内容对应的编码类型;在编码类型为非预设编码类型的情况下,将网页内容转换成编码类型为预设编码类型的网页内容。
这里,预设编码类型为预先指定的统一的编码类型。比如,预设编码类型为8位元(Universal Character Set/Unicode Transformation Format 8,UTF-8)编码。
如此,自动识别多种不同编码形式的网页内容,并转换成统一的预设编码格式,能够便于后续快速对网页内容进行分析,避免了因网页内容的编码类型不一致而影响分析效率的问题。
在一些实施例中,抓取结果包括网页源文件。该网页抓取方法还可包括:将抓取结果中的网页源文件存储至本地的指定的存储目录下。
这里,本地是指电子设备本地,如服务器本地。
这里,具体存储目录可根据用户需求进行设定和调整。
进一步地,在将网页源文件存储至本地的指定的存储目录下之后,可通过日志分析平台(Elasticsearch Logstash Kibana,ELK)或大数据平台等进行数据采集分析和可视化展示。
如此,将网页源文件存储至本地的指定的存储目录下,能够便于后续快速查找到网页源文件,提高查找网页源文件的效率,从而有助于提高对网页源文件进行分析和可视化展示的效率。
在一些实施例中,按照优先级顺序获取目标配置信息,包括:响应于检测到命令行参数,将命令行参数中的第一配置信息作为目标配置信息;响应于未检测到命令行参数但检测到系统环境变量,将系统环境变量中的第二配置信息作为目标配置信息;响应于只检测到配置文件,将配置文件中的第三配置信息作为目标配置信息。
举例来说,命令行参数中只携带了配置参数a和b,系统环境变量设置了配置参数c、d和e,配置文件设置了配置参数a、b、c、d、e、f和g;那么,最终确定出的目标配置参数包括:命令行参数中的a和b,系统环境变量中的c、d和e,配置文件中的f和g。
如此,按照预设的优先级顺序获取目标配置信息,不仅有助于使确定出的目标配置信息与系统环境相适应,还能够根据需求如通过命令行参数和配置文件设置配置信息,实现了网页抓取的定制化,提高了网页抓取的效率。
在一些实施例中,目标配置信息包括预设参数的配置信息,按照优先级顺序获取目标配置信息,还包括:响应于检测到命令行参数、系统环境变量和配置文件中均不包括预设参数,读取预设参数的默认值;将预设参数的默认值作为预设参数的目标配置信息。
这里,预设参数的默认值可以预先设定。
举例来说,命令行参数中只携带了配置参数a和b,系统环境变量设置了配置参数c、d和e,配置文件设置了配置参数a、b、c、d、e、f和g;那么,若目标配置信息还包括配置参数h,则最终确定出的目标配置参数包括:命令行参数中的a和b,系统环境变量中的c、d和e,配置文件中的f和g,默认的配置参数h。
如此,在未获取到网页抓取所需的相关参数的情况下,采用相关参数的默认值,能够确定出有效的目标配置信息,提高进而有助于提高网页抓取的效率。
在一些实施例中,该网页抓取方法还可包括:利用预设编程语言编译的第一类数据包读取命令行参数;利用预设编程语言编译的第二类数据包读取系统环境变量;利用预设编程语言编译的第三类数据包读取配置文件,并监听配置文件的变化。
这里,预设编程语言是支持多系统的编程语言。这里的系统包括但不限于windows系统、linux系统、macos系统等。
比如,预设编程语言可以是go语言。如此,采用go语言,能提供包括但不限于windows、linux、macos等多系统版本的网页抓取工具安装包文件。
这里,第一类数据包是用于读取命令行参数的数据包。比如,第一类数据包可以是go语言的flag包。在go语言中的flag包中,提供了命令行参数解析的功能。
这里,第二类数据包是用于读取系统环境变量的数据包。比如,第二类数据包可以是go语言的os包。
这里,第三类数据包是用于读取配置文件的数据包。比如,第三类数据包可以是go语言的viper包。
其中,viper包通过指定目录和文件名、文件类型,即可实现对知道那个文件的配置的读取。
示例性的,viper包包括:
如此,能够通过预设编程语言读取命令行参数、系统环境变量和配置文件,借助预设编程语言的多系统兼容属性,使网页抓取工具支持多种系统。
在一些实施例中,该网页抓取方法还可包括:在网页抓取过程中,响应于检测到配置文件发生变化,更新目标配置信息。
举例来说,网页抓取工具在第一时刻t1确定出的配置文件为配置文件1,在第二时刻t2确定出的配置文件为配置文件2,配置文件2与配置文件1存在至少部分内容不同。在t1~t2这段时间,网页抓取工具采用基于配置文件1确定出的目标配置信息1,执行抓取操作。在t2以后至未检测到新的配置文件之前,网页抓取工具采用基于配置文件2确定出的目标配置信息2,执行抓取操作。
如此,能够实时监听配置文件的变化,影响网页抓取工具的运行时的状态,无需重新启动网页抓取工具,节省了因重启网页抓取工具而浪费的网页抓取时间,能提高网页抓取的效率。
在一些实施例中,基于控制参数,执行针对目标网页的抓取操作,包括:在网页抓取过程中,利用预设编程语言编译的第四类数据包伪装成目标网页的请求头部信息,对目标网页进行访问,并执行针对目标网页的抓取操作。
这里,第四类数据包是可用于伪装请求头部信息的数据包,如第四类数据包可以是go语言的超文本传输协议(Hyper Text Transfer Protocol,HTTP)包。
这里,请求头部信息是HTTP中的头部(header)信息。
如此,能够更好地抓取网页内容,避免被爬取的网站对于网页抓取工具所在机器的国际互连协议(Internet Protocol,IP)地址进行封禁,并降低对所爬取的网站的实际使用造成的影响。
在一些实施例中,基于控制参数,执行针对目标网页的抓取操作,包括:从目标配置信息中获取目标网页的抓取链接;将目标网页的抓取链接推送到任务队列中;通过通信通道控制执行任务队列中的每一个抓取任务,并在超出最大上限值时进行阻塞,最大上限值是通信通道许可的并发任务数。
这里,通信通道可以是缓衡器通道(buffer channel)。
这里,将最大上限值记为M,通过通信通道控制执行任务队列中的每一个抓取任务,包括:选取M个待执行的抓取任务,在该M个待执行的抓取任务中,任一抓取任务执行完毕后,从任务队列中添加一个新的抓取任务至通信通道。
如此,能够保证同一时间执行最大上限值的任务数,提高网页抓取的效率。
在一些实施例中,基于控制参数,执行针对目标网页的抓取操作,还包括:在解析出目标网页包含子链接的情况下,若子链接表示的抓取深度小于等于最大抓取深度,则将子链接推送至任务队列中。
举例来说,将最大抓取深度记为S,S大于等于1。将目标网页的链接记为链接0,打开该链接0后,链接0包括子链接,记为子链接1;该子链接1包括新的子链接,记为子链接2;该子链接2包括新的子链接,记为子链接3;该子链接3包括新的子链接,记为子链接4。若S=2,则只需抓取到子链接2,即可终止对目标网页的抓取。若S=3,则只需抓取到子链接3,即可终止对目标网页的抓取。
在一些实施方式中,若当前通信通道中存在链接0,在链接0执行完毕之后,将新的任务,即子链接1的抓取任务推送至任务队列中,在通信通道调取该子链接1的抓取任务时,执行针对子链接1的抓取操作。在链接1执行完毕之后,将新的任务,即子链接2的抓取任务推送至任务队列中,在通信通道调取该子链接2的抓取任务时,执行针对子链接2的抓取操作。
在另一些实施方式中,若当前通信通道中存在链接0,在链接0执行完毕之后,执行针对子链接1的抓取操作;在子链接1执行完毕之后,执行针对子链接2的抓取操作,以此类推,直至执行完毕针对子链接S的抓取操作。
如此,能够保证网页抓取任务的有序进行,从而有助于提高网页抓取的效率。
在一些实施例中,基于控制参数,执行针对目标网页的抓取操作,还包括:在执行任务队列中的任一目标任务前,若查询到预设表中存在目标任务的统一资源定位符(Uniform Resource Locator,URL),则丢弃目标任务;若查询到预设表中不存在目标任务的统一资源定位符,则执行目标任务,并在执行完目标任务后,将目标任务的统一资源定位符记录至预设表中。
这里,预设表用于存储执行完毕的任务。其中,执行完毕,包括但不限于:成功抓取、未能成功抓取。
如此,通过预设表记录执行完毕的任务,能避免对同一个链接进行重复抓取,提高系统资源利用率。
在一些实施例中,在执行完目标任务后,将目标任务的统一资源定位符记录至预设表中,包括:响应于预设时间段内未成功抓取到目标网页,终止对目标网页的抓取操作,将目标任务的统一资源定位符记录至预设表中。
这里,预设时间段对应的时长为:目标配置信息中的超时时长。
这里,未成功抓取到目标网页,包括:未接收到网页请求响应成功消息,或接收到网页请求失败消息。
如此,通过预设表记录未成功抓取的任务,能避免对同一个链接进行重复抓取,提高系统资源利用率。
图3示出了网页抓取的架构示意图。如图3所示,该架构包括三大部分,分别是配置参数读取、日志记录器初始化和网页抓取执行器。
其中,配置参数读取,读取的优先级从高到低依次是命令行参数、系统环境变量、配置文件。使用go语言中的flag包进行命令行参数的获取,并设置各个命令的提示信息和默认值;使用go语言中的os包读取系统的环境变量参数;使用go语言中的viper包进行配置文件内容的读取,并实时监听配置文件的变化,及时对抓取过程进行调整。
其中,日志记录器初始化,包括:设置日志存储路径、设置日志名称、以及设置日志格式化。在参数读取完成之后,可进行全局的日志记录器的初始化。在终端界面及指定的日志文件存储路径中输出网页抓取过程中的各种信息,包括但不限于网页响应内容、状态码、网页编码格式、网页子链接、抓取错误信息等内容,以尽可能详细地记录网页抓取工具从开始运行到结束运行的所有过程信息。
其中,网页抓取执行器负责读取种子文件,根据抓取配置参数,对种子文件中的目标网页执行抓取操作。
执行器主要包括执行器初始化、执行器控制、执行器执行。在执行器初始化过程中,主要接收配置参数和种子文件,并初始化任务队列,将种子文件中的抓取链接推送到任务队列中。在执行器控制(execute)中,初始化通信通道(buffer channel),通过bufferchannel控制并发抓取的最大上限值,建立每个协程之间的通信,当超出最大上限值时进行阻塞。在执行器执行过程中,执行任务队列中的每一项抓取任务,建立已抓取的预设表如URL映射表,避免对同一个链接进行重复抓取;解析网页中的内容及包含的子链接,通过不同编码格式的编码(encode)和解码(decode)方法进行转换,最终以UTF-8编码进行内容存储;通过配置参数中的信息控制抓取的间隔和超时时间,对于未能及时响应的网页请求进行结束处理,避免阻塞后续任务的执行,并记录下网页链接地址。另外,将网页中解析的子链接依次推送至任务队列中,重复上述的操作,控制抓取不超过配置信息中的最大抓取深度。
在抓取的过程中,可以通过go语言中的http包伪装用户代理(user-agent)等浏览器请求头(header)信息,避免网站对于网页抓取工具所在机器的IP进行封禁,并控制爬取时间间隔,以避免对所爬取的网站的实际使用造成影响。
建立mysql数据库和mongodb数据库的连接池,将解析的网页内容按照结构化数据和非结构化数据,分开进行存储,并可将网页源文件存储至服务器,后期可以通过ELK、大数据等平台进行数据采集分析和可视化展示。
下面,给出命令行参数的一段实现代码,具体如下所示:
//使用flag包定义命令参数的默认值和注释
//如help对应的命令中,flag.Bool代表参数类型为boolean类型,false为默认值,"display this help and exit"为参数注释
//此处应定义所有需要声明的参数
var(
help=flag.Bool("h",false,"Display this help and exit.")
version=flag.Bool("v",false,"Output version information and exit.")
confDir=flag.String("c","../conf","Set configure dir path.")
logDir=flag.String("l","../log","Set log dir path.")
)
//解析命令行中的参数
func ParseCmdArgs()*CmdArgs{
//使用flag包开始进行解析
flag.Parse()
//当用户输入的为help命令时,显示所有参数的默认值和注释,并退出终端进程
if*help{
flag.PrintDefaults()
return nil
}
//当用户输入的为version命令时,显示版本号,并退出终端进程
if*version{
fmt.Println(constant.APP_VERSION)
return nil
}
//读取命令中输入的参数,并判断读取的路径是否存在,如果不存在进行异常提示,并退出终端进程
spiderConfFilePath:=path.Join(*confDir,constant.SPIDER_CONF_FILE_NAME)
err:=os.Stat(spiderConfFilePath)
if err!=nil{
if os.IsNotExist(err){
panic("The spider conf file is not exist:"+spiderConfFilePath)
}
panic(err.Error())
}
if_,err:=os.Stat(*logDir);err!=nil{
if os.IsNotExist(err){
panic("The log dir is not exist:"+*logDir)
}
panic(err.Error())
}
//将所有的参数存储到args变量中
args:=&CmdArgs{
ConfDir:*confDir,
LogDir:*logDir,
SpiderConfFilePath:spiderConfFilePath,
}
return args
}
下面,给出通过os包获取环境变量的一段实现代码,具体如下:
package main
import"fmt"
import"os"
func main(){
var confDir string
var logDir string
//读取环境变量参数
confDir=os.Getenv("confDir")
logDir=os.Getenv("logDir")
}
下面,给出通过viper包读取文件配置的一段实现代码,具体如下:
package main
import(
"log"
"github.com/spf13/viper"
)
func main(){
//设置配置文件名称
viper.SetConfigName("config")
//设置配置文件类型
viper.SetConfigType("conf")
//设置配置文件搜索类型
viper.AddConfigPath(".")
//读取配置文件内容
err:=viper.ReadInConfig()
if err!=nil{
log.Fatal("read config failed:%v",err)
}
//监听配置文件变化
viper.WatchConfig()
//获取某一个配置参数,如抓取间隔
crawlTimeout:=viper.Get("crawlTimeout")
}
下面,列举一配置文件实例:
[spider]
#种子文件路径
urlListFile=../data/url.data
#抓取结果存储目录
outputDirectory=../output
#最大抓取深度(种子为0级)
maxDepth=2
#抓取间隔,单位:秒
crawlInterval=1
#抓取超时,单位:秒,用于快速失败
crawlTimeout=1
#需要存储的目标网页URL pattern(正则表达式)
targetUrl=.*.(htm|html)$
#抓取routine数
threadCount=8
下面,给出用于实现网页内容编码格式转化的一段代码,具体如下:
func(t*Task)Execute()([]string,error){
//抓取url对应的网络内容
body,err:=utils.Crawl(t.Url,t.CommonConfig.CrawlTimeout)
if err!=nil{
return nil,err
}
//判断网络内容的编码格式
encodeType:=utils.GetDataEncodeType(body)
//如果网页内容的编码格式不是UTF8则进行转化,目前网页应该只有gbk和UTF8两种格式,若有其它格式,则在此处进行扩展
if encodeType!=constant.UTF8{
body,err=utils.ConvertGbkToUtf8(body)
if err!=nil{
parseErr:=&utils.ParseError{
Url:t.Url,
Msg:fmt.Sprintf("convert gbk to utf8 failed,%s",err.Error()),
}
err=parseErr.Get()
return nil,err
}
}
//将网络内容进行保存
if t.CommonConfig.TargetUrlRegExp.MatchString(t.Url){
err=t.StoreData(body)
if err!=nil{
parseErr:=&utils.ParseError{
Url:t.Url,
FuncName:"task.StoreData",
Err:err,
}
err=parseErr.Get()
return nil,err
}
}
//解析url对应的网络内容中的子链接
urlList,err:=t.ResolveUrlList(body)
if err!=nil{
parseErr:=&utils.ParseError{
Url:t.Url,
FuncName:"task.ResolveUrlList",
Err:err,
}
err=parseErr.Get()
return nil,err
}
return urlList,nil
}
//转化网络编码格式的方法
func ConvertGbkToUtf8(data[]byte)([]byte,error){
//功能使用transform包实现
reader:=transform.NewReader(bytes.NewReader(data),
simplifiedchinese.GBK.NewDecoder())
d,e:=ioutil.ReadAll(reader)
if e!=nil{
return nil,e
}
return d,nil
}
通过上述架构,能提供包括但不限于windows、linux、macos等多系统版本的网页抓取工具安装包文件。网页抓取工具包安装完成之后,可以通过命令行参数、系统环境变量及指定配置文件路径(优先级从高到低)等多种方式去设置最大抓取深度、抓取间隔、抓取超时、网页内容匹配条件、抓取的任务并发数量、种子文件路径、结果存放路径等运行参数信息,进而启动网页抓取工具执行网页抓取操作。另外,与采用python或java语言实现的网页抓取工具相比,采用go语言实现网页抓取工具,可以充分利用多核,最大效率地发挥系统资源的能力,降低内存开销成本,提升网页抓取的效率,并支持多系统的安装版本,支持多种抓取参数配置形式,并能实时监听配置文件的变化,影响抓取工具的运行时的状态。
应理解,图3所示的架构示意图以及上述所列举的代码片段仅仅是示例性而不是限制性的,并且其是可扩展的,本领域技术人员可以基于上述例子进行各种显而易见的变化和/或替换,得到的技术方案仍属于本公开实施例的公开范围。
本公开实施例提供了一种网页抓取装置,如图4所示,该网页抓取装置可以包括:获取单元401,用于按照优先级顺序获取目标配置信息;第一确定单元402,用于基于目标配置信息确定控制参数和待抓取的目标网页;抓取单元403,用于基于控制参数,执行针对目标网页的抓取操作,得到目标网页的抓取结果。
在一些实施例中,如图5所示,该网页抓取装置还可包括:第二确定单元404,用于基于目标配置信息确定目标存储路径;记录单元405,用于将记录的网页抓取过程中的信息生成日志文件,并将日志文件存储至目标存储路径下。
在一些实施例中,如图5所示,该网页抓取装置还可包括:第三确定单元406,用于确定抓取结果的数据类型;第一存储单元407,用于按照数据类型存储抓取结果。
在一些实施例中,该抓取结果包括网页内容。该第一存储单元407,包括:第一存储子单元,用于将数据类型为结构化数据的网页内容,存储至本地的第一数据库中;第二存储子单元,用于将数据类型为非结构化数据的网页内容,存储至本地的第二数据库中。
在一些实施例中,如图5所示,该网页抓取装置还可包括:解析单元408,用于解析出网页内容对应的编码类型;转换单元409,用于在编码类型为非预设编码类型的情况下,将网页内容转换成编码类型为预设编码类型的网页内容。
在一些实施例中,如图5所示,该网页抓取装置还可包括:第二存储单元410,用于将抓取结果中的网页源文件存储至本地的指定的存储目录下。
在一些实施例中,该获取单元401,包括:第一获取子单元,用于响应于检测到命令行参数,将命令行参数中的第一配置信息作为目标配置信息;第二获取子单元,用于响应于未检测到命令行参数但检测到系统环境变量,将系统环境变量中的第二配置信息作为目标配置信息;第三获取子单元,用于响应于只检测到配置文件,将配置文件中的第三配置信息作为目标配置信息。
在一些实施例中,该目标配置信息包括预设参数的配置信息,该获取单元401,还可包括:第四获取子单元,用于响应于检测到命令行参数、系统环境变量和配置文件中均不包括预设参数,读取预设参数的默认值;将预设参数的默认值作为预设参数的目标配置信息。
在一些实施例中,该第一获取子单元,还用于利用预设编程语言编译的第一类数据包读取命令行参数;第二获取子单元,还用于利用预设编程语言编译的第二类数据包读取系统环境变量;第三获取子单元,还用于利用预设编程语言编译的第三类数据包读取配置文件,并监听配置文件的变化。
在一些实施例中,该获取单元401,还可包括:更新子单元,用于在网页抓取过程中,响应于检测到配置文件发生变化,更新目标配置信息。
在一些实施例中,该抓取单元403,还可包括:伪装子单元,用于在网页抓取过程中,利用预设编程语言编译的第四类数据包伪装成目标网页的请求头部信息,对目标网页进行访问;抓取子单元,用于执行针对目标网页的抓取操作。
在一些实施例中,该抓取单元403,还可包括:第一推送子单元,用于从目标配置信息中获取目标网页的抓取链接;将目标网页的抓取链接推送到任务队列中;第一控制子单元,用于通过通信通道控制执行任务队列中的每一个抓取任务,并在超出最大上限值时进行阻塞,最大上限值是通信通道许可的并发任务数。
在一些实施例中,该抓取单元403,还可包括:第二推送子单元,用于在解析出目标网页包含子链接的情况下,若子链接表示的抓取深度小于等于最大抓取深度,则将子链接推送至任务队列中。
在一些实施例中,该抓取单元403,还可包括:第二控制子单元,用于在执行任务队列中的任一目标任务前,若查询到预设表中存在目标任务的统一资源定位符,则丢弃目标任务;第三控制子单元,用于若查询到预设表中不存在目标任务的统一资源定位符,则执行目标任务,并在执行完目标任务后,将目标任务的统一资源定位符记录至预设表中。
在一些实施例中,该第三控制子单元,还用于:响应于预设时间段内未成功抓取到目标网页,终止对目标网页的抓取操作,将目标任务的统一资源定位符记录至预设表中。
本领域技术人员应当理解,本公开实施例的网页抓取装置中各处理模块的功能,可参照前述的网页抓取方法的相关描述而理解,本公开实施例的网页抓取装置中各处理模块,可通过实现本公开实施例所述的功能的模拟电路而实现,也可以通过执行本公开实施例所述的功能的软件在电子设备上的运行而实现。
本公开实施例的网页抓取装置,能按照优先级顺序获取目标配置信息,实现了对网页抓取的多元化配置,从而有助于提高网页抓取的效率。另外,通过多种方式获取目标配置信息,不仅增强了目标配置信息的来源多样性,满足对目标配置信息的定制化需求,还能使确定出的目标配置信息更准确,从而有助于提升抓取的数据的准确性。
图6示出了网页抓取的场景示意图,从图6可以看出,电子设备如云服务器接收来自各终端的命令行参数、系统环境变量和配置文件;为各终端确定目标配置信息;根据各终端的目标配置信息,为各终端执行网页抓取操作。进一步地,按照目标配置信息将网页抓取结果存储至对应的数据库,并通知各终端网页抓取结果的相关信息。如此,能够根据终端发送的配置信息,执行网页抓取操作。
下面列举几个使用场景。比如,企业A通过终端向电子设备发送命令行参数、系统环境变量和配置文件,该配置文件中包括与企业A产品相关的搜索条件,电子设备为企业A提供网页抓取服务,生成抓取结果,进而便于企业A根据抓取结果进行产品调整或布局。又比如,企业B通过终端向电子设备发送配置文件,该配置文件中包括企业B产品的相关评论信息,电子设备为企业B提供网页抓取服务,生成抓取结果,进而便于企业B根据网页抓取结果调整企业B的推广方向。
应理解,图6所示的场景图仅仅是示意性而非限制性的,本领域技术人员可以基于图6的例子进行各种显而易见的变化和/或替换,得到的技术方案仍属于本公开实施例的公开范围。
本公开的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图7示出了可以用来实施本公开的实施例的示例电子设备700的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图7所示,设备700包括计算单元701,其可以根据存储在只读存储器(Read-OnlyMemory,ROM)702中的计算机程序或者从存储单元708加载到随机访问存储器(RandomAccess Memory,RAM)703中的计算机程序,来执行各种适当的动作和处理。在RAM 703中,还可存储设备700操作所需的各种程序和数据。计算单元701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(Input/Output,I/O)接口705也连接至总线704。
设备700中的多个部件连接至I/O接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元701可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元701的一些示例包括但不限于中央处理单元(Central Processing Unit,CPU)、图形处理单元(Graphics Processing Unit,GPU)、各种专用的人工智能(ArtificialIntelligence,AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(Digital Signal Processor,DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元701执行上文所描述的各个方法和处理,例如网页抓取方法。例如,在一些实施例中,网页抓取方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由ROM 702和/或通信单元709而被载入和/或安装到设备700上。当计算机程序加载到RAM 703并由计算单元701执行时,可以执行上文描述的网页抓取方法的一个或多个步骤。备选地,在其他实施例中,计算单元701可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行网页抓取方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、现场可编程门阵列(Field Programmable Gate Array,FPGA)、专用集成电路(Application Specific Integrated Circuit,ASIC)、专用标准产品(Application-Specific Standard Products,ASSP)、芯片上系统的系统(System on Chip,SOC)、负载可编程逻辑设备(Complex Programmable Logic Device,CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器、只读存储器、可擦除可编程只读存储器(ErasableProgrammable Read-Only Memory,EPROM)、快闪存储器、光纤、便捷式紧凑盘只读存储器(Compact Disk Read Only Memory,CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,阴极射线管(Cathode Ray Tube,CRT)或者液晶显示器(Liquid Crystal Display,LCD)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入、或者触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(Local Area Network,LAN)、广域网(Wide Area Network,WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端和服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (19)
1.一种网页抓取方法,包括:
按照优先级顺序获取目标配置信息;
基于所述目标配置信息确定控制参数和待抓取的目标网页;
基于所述控制参数,执行针对所述目标网页的抓取操作,得到所述目标网页的抓取结果。
2.根据权利要求1所述的方法,还包括:
基于所述目标配置信息确定目标存储路径;
将记录的网页抓取过程中的信息生成日志文件,并将所述日志文件存储至所述目标存储路径下。
3.根据权利要求1或2所述的方法,还包括:
确定所述抓取结果的数据类型;
按照所述数据类型存储所述抓取结果。
4.根据权利要求3所述的方法,其中,所述抓取结果包括网页内容,所述按照所述数据类型存储所述抓取结果,包括:
将所述数据类型为结构化数据的网页内容,存储至本地的第一数据库中;
将所述数据类型为非结构化数据的网页内容,存储至本地的第二数据库中。
5.根据权利要求4所述的方法,还包括:
解析出所述网页内容对应的编码类型;
在所述编码类型为非预设编码类型的情况下,将所述网页内容转换成编码类型为所述预设编码类型的网页内容。
6.根据权利要求3所述的方法,其中,所述抓取结果包括网页源文件,所述方法还包括:
将所述网页源文件存储至本地的指定的存储目录下。
7.根据权利要求1或2所述的方法,其中,所述按照优先级顺序获取目标配置信息,包括:
响应于检测到命令行参数,将所述命令行参数中的第一配置信息作为目标配置信息;
响应于未检测到所述命令行参数但检测到系统环境变量,将所述系统环境变量中的第二配置信息作为目标配置信息;
响应于只检测到配置文件,将所述配置文件中的第三配置信息作为目标配置信息。
8.根据权利要求7所述的方法,其中,所述目标配置信息包括预设参数的配置信息,所述按照优先级顺序获取目标配置信息,还包括:
响应于检测到所述命令行参数、所述系统环境变量和所述配置文件中均不包括所述预设参数,读取所述预设参数的默认值;
将所述预设参数的默认值作为所述预设参数的目标配置信息。
9.根据权利要求7所述的方法,还包括:
利用预设编程语言编译的第一类数据包读取所述命令行参数;
利用预设编程语言编译的第二类数据包读取所述系统环境变量;
利用预设编程语言编译的第三类数据包读取所述配置文件,并监听所述配置文件的变化。
10.根据权利要求9所述的方法,还包括:
在网页抓取过程中,响应于检测到所述配置文件发生变化,更新所述目标配置信息。
11.根据权利要求1或2所述的方法,其中,所述基于所述控制参数,执行针对所述目标网页的抓取操作,包括:
在网页抓取过程中,利用预设编程语言编译的第四类数据包伪装成所述目标网页的请求头部信息,对所述目标网页进行访问,并执行针对所述目标网页的抓取操作。
12.根据权利要求1或2所述的方法,其中,所述基于所述控制参数,执行针对所述目标网页的抓取操作,包括:
从所述目标配置信息中获取所述目标网页的抓取链接;
将所述目标网页的抓取链接推送到任务队列中;
通过通信通道控制执行所述任务队列中的每一个抓取任务,并在超出最大上限值时进行阻塞,所述最大上限值是所述通信通道许可的并发任务数。
13.根据权利要求12所述的方法,其中,所述基于所述控制参数,执行针对所述目标网页的抓取操作,还包括:
在解析出所述目标网页包含子链接的情况下,若所述子链接表示的抓取深度小于等于最大抓取深度,则将所述子链接推送至任务队列中。
14.根据权利要求12所述的方法,其中,所述基于所述控制参数,执行针对所述目标网页的抓取操作,还包括:
在执行所述任务队列中的任一目标任务前,若查询到预设表中存在所述目标任务的统一资源定位符,则丢弃所述目标任务;
若查询到所述预设表中不存在所述目标任务的统一资源定位符,则执行所述目标任务,并在执行完所述目标任务后,将所述目标任务的统一资源定位符记录至所述预设表中。
15.根据权利要求14所述的方法,其中,所述在执行完所述目标任务后,将所述目标任务的统一资源定位符记录至所述预设表中,包括:
响应于预设时间段内未成功抓取到所述目标网页,终止对所述目标网页的抓取操作,将所述目标任务的统一资源定位符记录至所述预设表中。
16.一种网页抓取装置,包括:
获取单元,用于按照优先级顺序获取目标配置信息;
第一确定单元,用于基于所述目标配置信息确定控制参数和待抓取的目标网页;
抓取单元,用于基于所述控制参数,执行针对所述目标网页的抓取操作,得到所述目标网页的抓取结果。
17.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-15中任一项所述的方法。
18.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-15中任一项所述的方法。
19.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-15中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210846381.XA CN115329170A (zh) | 2022-07-04 | 2022-07-04 | 网页抓取方法、装置、设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210846381.XA CN115329170A (zh) | 2022-07-04 | 2022-07-04 | 网页抓取方法、装置、设备以及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115329170A true CN115329170A (zh) | 2022-11-11 |
Family
ID=83918258
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210846381.XA Pending CN115329170A (zh) | 2022-07-04 | 2022-07-04 | 网页抓取方法、装置、设备以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115329170A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115730150A (zh) * | 2022-12-09 | 2023-03-03 | 广州富莱星科技有限公司 | 一种数据抓取方法、系统、设备及可存储介质 |
CN115858902A (zh) * | 2023-02-23 | 2023-03-28 | 巢湖学院 | 一种页面爬虫规则更新方法、系统、介质及设备 |
-
2022
- 2022-07-04 CN CN202210846381.XA patent/CN115329170A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115730150A (zh) * | 2022-12-09 | 2023-03-03 | 广州富莱星科技有限公司 | 一种数据抓取方法、系统、设备及可存储介质 |
CN115858902A (zh) * | 2023-02-23 | 2023-03-28 | 巢湖学院 | 一种页面爬虫规则更新方法、系统、介质及设备 |
CN115858902B (zh) * | 2023-02-23 | 2023-05-09 | 巢湖学院 | 一种页面爬虫规则更新方法、系统、介质及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111416821A (zh) | 物联网设备信息采集方法、系统和装置 | |
CN110650164B (zh) | 文件的上传方法、装置、终端以及计算机存储介质 | |
CN115329170A (zh) | 网页抓取方法、装置、设备以及存储介质 | |
CN112154420A (zh) | 自动智能云服务测试工具 | |
US20170300129A1 (en) | Keypress processing method and apparatus for terminal | |
CN110932918A (zh) | 日志数据采集方法、装置及存储介质 | |
CN111782730B (zh) | 一种文件上传方法、装置及存储介质 | |
CN113127335B (zh) | 一种系统测试的方法和装置 | |
CN110457132B (zh) | 一种功能对象的创建方法、装置和终端设备 | |
CN109597952B (zh) | 网页信息处理方法、系统、电子设备和存储介质 | |
CN112765246B (zh) | 任务处理方法、装置、电子设备和存储介质 | |
CN112416698B (zh) | 监控系统的扩展方法及装置、存储介质及电子设备 | |
AU2018390863B2 (en) | Computer system and method for extracting dynamic content from websites | |
WO2023092981A1 (zh) | 流式数据处理方法、规则插件、流式数据处理模块及系统 | |
CN111400060B (zh) | 设备联动方法、装置、服务器和介质 | |
CN114553944A (zh) | 预警消息推送方法和系统 | |
CN114253441A (zh) | 目标功能的启用方法及装置、存储介质、电子装置 | |
CN112650502A (zh) | 批处理任务处理方法、装置、计算机设备和存储介质 | |
CN113301049A (zh) | 一种工控设备的审计方法、装置、设备及可读存储介质 | |
CN113608817B (zh) | 弹框处理方法及系统 | |
CN116360892B (zh) | 一种分布式业务系统的功能扩展方法、装置、设备及介质 | |
CN114090082B (zh) | 一种整合规则引擎的调用外部接口的方法及系统 | |
CN111291299B (zh) | 一种直接获取本地命令执行结果的方法及本地服务器 | |
CN113779018B (zh) | 一种数据处理方法和装置 | |
CN115563183B (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 |