CN108132948A - 处理爬取网页的方法和装置 - Google Patents
处理爬取网页的方法和装置 Download PDFInfo
- Publication number
- CN108132948A CN108132948A CN201611089740.2A CN201611089740A CN108132948A CN 108132948 A CN108132948 A CN 108132948A CN 201611089740 A CN201611089740 A CN 201611089740A CN 108132948 A CN108132948 A CN 108132948A
- Authority
- CN
- China
- Prior art keywords
- webpage
- verified
- identification information
- crawled
- service
- 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.)
- Granted
Links
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/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
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做去重工作。特别是针对内容不会变化的网页,比如记录新闻内容的网页,爬虫系统只需爬取一次,之后永远不再爬取。
为了避免重复爬取网页,爬虫系统中经常会使用过滤器,例如布隆过滤器,布隆过滤器具有极高空间效率和时间效率,可以用于检索一个元素是否在一个集合中,但是却无法删除一个集合中的特定值。现有的分布式爬虫系统就是通过使用布隆过滤器服务判断一个网页URL是否已经被爬取过。在爬虫准备爬取一个只需爬取一次的网页前,首先检测该网页URL是否已经包含在布隆过滤器所记录的网址集合中,若存在,则认为该网页已经被爬取过了,不再进行爬取;否则将该网页的URL记录到布隆过滤器集合中,防止任意爬虫再次爬取该网页,然后再由该爬虫尝试爬取该网页。但是上述现有技术的防止重复爬取机制存在以下弊端:由于设备、网络、待爬取网站等都有可能出现故障,可能会出现爬虫不能正常的获取到一个网页或者获取到的网页内容有误的情况,而这时该网页的URL已经记录在了布隆过滤器服务中,以后对该网页的爬取都将无法通过布隆过滤器服务的检查,事实上造成了网页的漏爬。通过下面的例子可以更为清楚的说明上述现有技术的不足:假设分布式爬虫系统准备首次爬取一个网页,并且该网页的内容不会更新,只需爬取一次,爬虫系统首先调用布隆过滤器服务查询发现该网页的URL未被爬取过,于是将该网页的URL记录到布隆过滤器服务中,之后爬虫系统将该网页的URL交由某个爬虫客户端具体负责爬取,在接受爬取任务后,爬虫客户端出现故障崩溃,未能将爬取结果提交到爬虫系统,由于该网页的URL已经被记录在布隆过滤器中,虽然爬虫系统未能得到对应的网页的内容,但是之后对这个网页的URL的爬取都会因为布隆过滤器中已存在该网页的URL而放弃,并且布隆过滤器中的记录无法删除,最终导致无法爬取到该网页的内容。
针对现有技术中,在防止爬虫系统重复爬取网页时,爬取内容校验不通过但网页无法被再次爬取的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种处理爬取网页的方法和装置,以至少解决现有技术中在防止爬虫系统重复爬取网页时,爬取内容校验不通过但网页无法被再次爬取的技术问题。
根据本发明实施例的一个方面,提供了一种处理爬取网页的方法,包括:确定是否存在待验证的网页的标识信息;根据待验证的网页的标识信息爬取得到网页页面之后,校验爬取得到的网页页面;在爬取得到的网页页面校验通过的情况下,确定待验证的网页爬取成功;将爬取成功的待验证的网页的标识信息保存至过滤器服务。
根据本发明实施例的另一方面,还提供了一种处理爬取网页的装置,包括:确定模块,用于确定是否存在待验证的网页的标识信息;校验模块,用于根据待验证的网页的标识信息爬取得到网页页面之后,校验爬取得到的网页页面;第二确定模块,用于在爬取得到的网页页面校验通过的情况下,确定待验证的网页爬取成功;保存模块,用于将爬取成功的待验证的网页的标识信息保存至过滤器服务。
在本发明实施例中,采用先校验网页页面后在过滤器服务中记录网页的标识信息的方式,通过校验根据待验证的网页的标识信息爬取得到的网页页面,在校验通过的情况下,确定待验证的网页爬取成功,然后才将待验证的网页的标识信息保存至过滤器服务,达到了在防止爬虫系统重复爬取网页的同时保证网页不被漏爬的目的,从而实现了不漏爬网页的技术效果,进而解决了现有技术中在防止爬虫系统重复爬取网页时,爬取内容校验不通过但网页无法被再次爬取的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例1的处理爬取网页的方法流程图;
图2是根据本发明实施例1的一种可选的处理爬取网页的方法流程图;
图3是根据本发明实施例2的处理爬取网页的装置示意图;
图4是根据本发明实施例2的一种可选的处理爬取网页的装置示意图;
图5是根据本发明实施例2的一种可选的处理爬取网页的装置示意图;
图6是根据本发明实施例2的一种可选的处理爬取网页的装置示意图;
图7是根据本发明实施例2的一种可选的处理爬取网页的装置示意图;
图8是根据本发明实施例2的一种可选的处理爬取网页的装置示意图;
图9是根据本发明实施例2的一种可选的处理爬取网页的装置示意图;
图10是根据本发明实施例2的一种可选的处理爬取网页的装置示意图;以及
图11是根据本发明实施例3的处理爬取网页的系统示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本发明实施例,提供了一种处理爬取网页的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本发明实施例1的处理爬取网页的方法流程图,如图1所示,该方法包括如下步骤:
步骤S102,确定是否存在待验证的网页的标识信息。
具体的,在对一个网页进行验证之前,不能确定该网页是否已经被爬取过,也就是存在已经被爬取过和还没有被爬取过两种可能性,需要注意的是,本发明所要解决的是现有技术中防止爬虫系统重复爬取网页时,爬取内容校验不通过但网页无法被再次爬取的技术问题,因此本发明中的提到的网页都只需被爬取一次,如果网页已经被爬取过,那么就不需要再次爬取,因此在确定要对一个网页进行爬取前,需要首先验证该网页是否被爬取过,只有在没有被爬取过的情况下,才进一步的根据待验证的网页的标识信息进行爬取,因此确定是否存在待验证的网页的标识信息实际上包括两层含义,第一层含义为确定是否存在待验证的网页,第二层含义为在确定存在待验证的网页后,确定是否存在待验证的网页的标识信息。
可选的,待验证的网页的标识信息包括但不仅限于待验证的网页的地址信息,其中地址信息包括但不仅限于待验证的网页的URL、域名等。
步骤S104,根据待验证的网页的标识信息爬取得到网页页面之后,校验爬取得到的网页页面。
具体的,在确定是否存在待验证的网页的标识信息之后,爬虫系统可以根据待验证的网页的标识信息对该网页进行爬取,其中爬虫系统包括爬虫客户端和爬虫服务器,待验证的网页的标识信息被交由某一个爬虫客户端,爬虫客户端根据待验证的网页的标识信息爬取相应的网页,在爬取得到网页页面后,发送给爬虫服务器,由爬虫服务器对爬取得到的网页页面进行校验。
需要注意的是,对爬虫客户端来说,由于各种故障,爬取网页后可能不是一定能够得到网页页面,或者得到网页页面后由于通信故障不一定能够将网页页面发送给爬虫服务器或者不一定能够及时的将网页页面发送给爬虫服务器,在上述情况下,爬虫服务器不能获取到根据待验证的网页的标识信息爬取得到的网页页面,因此也无法进行后续步骤,但是由于执行到步骤S104时,该网页的标识信息还没有被记录在过滤器服务中,因此还是可以对该网页进行再次验证以及爬取,还是能够避免现有技术中漏爬的现象。
步骤S106,在爬取得到的网页页面校验通过的情况下,确定待验证的网页爬取成功。
具体的,对爬取得到的网页页面进行校验后,存在校验通过和校验不通过两种情况,在校验通过的情况下,确定待验证的网页爬取成功,在校验不通过的情况下,确定待验证的网页爬取失败。
步骤S108,将爬取成功的待验证的网页的标识信息保存至过滤器服务。
具体的,如果待验证的网页爬取成功,则将相应的网页标识信息保存至过滤器服务,相应的,如果待验证的网页爬取失败,则相应的网页的标识信息不会保存在过滤器服务中,此处需要说明的是,过滤器服务可以用于检索一个元素是否在一个集合中,但是却无法删除一个集合中的特定值,使用在本发明中,如果过滤器服务不为空,则集合指的是过滤器服务中已经存储的至少一个网页的标识信息,元素则是指特定网页的标识信息,因此爬取成功的待验证的网页的标识信息保存至过滤器服务后,就表示相应的网页已经被爬取过,以后通过在过滤器服务中进行简单的检索,就可以避免对该网页再次进行爬取,而爬取失败的待验证的网页由于没有被保存至过滤器服务,在下次对该网页进行爬取时,由于过滤器服务中没有该网页的标识信息的记录,表示该网页还没有被爬取过,可以被爬取。
通过上述步骤S108,只有爬取成功的待验证的网页的标识信息才能够被记录在过滤器服务中,也就是保证了过滤器服务中记录的标识信息对应的网页一定都是爬取成功的网页,而非现有技术中过滤器服务中的记录的标识信息对应的网页可能有爬取失败的网页,进一步提高了过滤器服务的可靠性。
可选的,本发明中的过滤器服务优选为高可用的过滤器服务,其中高可用的过滤器能够在对过滤器访问失败的情况下,仅需重新访问过滤器服务即可,本发明中的过滤器服务包括但不仅限于布隆过滤器服务,需要注意的是,布隆过滤器的空间效率和查询时间都远远超过一般的算法,但是也存在一定的误识别率和删除困难,因此本发明的过滤器也可以包括布隆过滤器的一些变种。
通过上述步骤S102-S108,本发明采用先校验网页页面后在过滤器服务中记录网页的标识信息的方式,通过校验根据待验证的网页的标识信息爬取得到的网页页面,在校验通过的情况下,确定待验证的网页爬取成功,然后才将待验证的网页的标识信息保存至过滤器服务,达到了在防止爬虫系统重复爬取网页的同时保证网页不被漏爬的目的,从而实现了不漏爬网页的技术效果,进而解决了现有技术中在防止爬虫系统重复爬取网页时,爬取内容校验不通过但网页无法被再次爬取的技术问题。
在一种可选的实施例中,步骤S102包括步骤S202:确定缓存服务中是否存在以待验证的网页的标识信息为键值的缓存项。
具体的,现有的爬虫系统多为分布式系统,也就是在同一时刻,存在大量并发的对网页的爬取线程,因此对同一个待验证的网页,为了获知是否已经有其他线程正在处理该网页,本发明引入了缓存服务,缓存服务用来短暂存储以网页的标识信息为键值的缓存项,通过检索缓存服务,来确定缓存服务中是否存在以待验证的网页的标识信息为键值的缓存项。当缓存服务中不存在以待验证的网页的标识信息为键值的缓存项时,则表示没有其他线程正在处理待验证的网页,则可以进一步执行步骤S204:确定过滤器服务中是否存在待验证的网页的标识信息;当缓存服务中存在以待验证的网页的标识信息为键值的缓存项时,则表示存在其他线程正在处理待验证的网页,如果此时继续进行后续步骤,也就是至少两个线程同时对同一个网页进行验证甚至后续的爬取,会造成资源浪费,导致对同一个网页的重复爬取,因此,如果缓存服务中存在以待验证的网页的标识信息为键值的缓存项,则结束对该网页的方法流程,不再对该网页的标识信息进行进一步操作。
可选的,本发明中的缓存服务优选为高可用的缓存服务,其中高可用的缓存服务能够在访问缓存服务失败的情况下,仅需重新访问缓存服务即可,本发明中的缓存服务包括但不限于Redis缓存服务。
可选的,为了进一步确保对同一个待验证的网页,只有一个线程在处理,本发明中的分布式的爬虫系统使用Zookeeper管理分布式锁。
在一种可选的实施例中,步骤S204包括:当过滤器服务中不存在待验证的网页的标识信息时,将以待验证的网页的标识信息为键值的缓存项保存至缓存服务;当过滤器服务中存在待验证的网页的标识信息时,确定待验证的网页已经被爬取过,不再对待验证的网页的标识信息进行进一步操作。
具体的,当过滤器服务中不存在待验证的网页的标识信息时,说明该网页还没有被爬取过,当过滤器服务中存在待验证的网页的标识信息时,说明该网页已经被爬取过,由于无需对爬取过的网页再次爬取,因此,不需要在对该网页的标识信息做任何处理。
需要注意的是,当过滤器服务中不存在待验证的网页的标识信息时,需要将待验证的网页的标识信息为键值的缓存项保存至缓存服务,以标记该网页正在被某个线程处理,其他线程如果在缓存服务中检索到以该网页的标识信息为键值的缓存项,为了不重复对一个网页进行爬取,可以不再对该网页的标识信息进行进一步操作。
在一种可选的实施例中,缓存服务中是存在缓存时限的,也就是说以待验证的网页的标识信息为键值的缓存项保存至缓存服务是由时间限制的,如果待验证的网页的标识信息在缓存服务中保留的时间超过预设缓存时间,以待验证的网页的标识信息为键值的缓存项会自动消除,也就是说,在确定待验证的网页的标识信息之后,获取到根据待验证的网页的标识信息爬取得到的网页页面之前,如果在预设缓存时间内没有获取到根据待验证的网页的标识信息爬取得到的网页页面,以待验证的网页的标识信息为键值的缓存项会从缓存服务中自动消除,也就获取不到根据待验证的网页的标识信息爬取得到的网页页面。其中,预设缓存时间可以根据实际需要进行设置。
需要注意的是,获取不到根据待验证的网页的标识信息爬取得到的网页页面的原因除了以待验证的网页的标识信息为键值的缓存项在缓存服务中保留的时间超过预设缓存时限,还可能是爬虫系统的通讯故障导致无法接收到爬取得到的网页页面。
在一种可选的实施例中,步骤S108之后,还包括:从缓存服务中删除以待验证的网页的标识信息为键值的缓存项。
具体的,将爬取成功的待验证的网页的标识信息保存至过滤器服务后,才表示对该网页的处理已经完全结束,也就说明此次线程中对该网页的处理结束,因此不需要在缓存服务中继续储存以该网页的标识信息为键值的缓存项,可以直接从缓存服务中删除以待验证的网页的标识信息为键值的缓存项。
在一种可选的实施例中,校验爬取得到的网页页面,还包括:在校验爬取得到的网页页面不通过的情况下,从缓存服务中删除以待验证的网页的标识信息为键值的缓存项。
具体的,在校验爬取得到的网页页面不通过的情况下,说明对该网页的爬取失败,需要重新对该网页进行爬取,但是如果缓存服务中依然保存以该网页的标识信息为键值的缓存项,那么其他线程在检索到缓存服务中存在以该网页的标识信息为键值的缓存项时,不会再启动对该网页的进一步处理,虽然缓存服务中存在一定的缓存时限,以该网页的标识信息为键值的缓存项最终还是会从缓存服务中消除,最终还是可以启动对该网页的再次爬取流程,但是可能在达到缓存时限还需要耗费一定的时间,为了避免时间浪费,提高处理效率,在校验爬取得到的网页页面不通过的情况下,可以直接从缓存服务中删除以待验证的网页的标识信息为键值的缓存项。
在一种可选的实施例中,校验爬取得到的网页页面,包括:校验爬取得到的网页页面是否为无法访问网页,和/或;校验爬取得到的网页页面内容是否与预期一致。
具体的,由于各种原因,访问一个网页的时候可能会出现无法访问网页的情况,此时爬取得到的网页页面也就是显示无法访问网页的网页页面,在这种情况下,校验爬取得到的网页页面不通过;除此之外,还可能会出现登录信息失效等原因导致的虽然爬取得到了有具体内容的网页页面,但是与预期的网页页面内容不一致的情况,因此校验结果仍然是校验爬取得到的网页页面不通过。
需要注意的是,如何校验爬取得到的网页页面并不是本发明的主要发明点,除了上述几种校验的方式,本发明也包括其他现有常用的其他校验方式。
在一种可选的实施例中,将以待验证的网页的标识信息为键值的缓存项保存至缓存服务,包括:计算得到待验证的网页的标识信息的散列值;将以计算得到待验证的网页的标识信息的散列值散为键值的缓存项保存至缓存服务。
具体的,为避免某些特殊的网站存在网页的标识信息非常长或标识信息内有非法字符的情况,缓存服务中并非直接记录网页的标识信息,而是对标识信息先求散列值,然后以求取散列值后的网页的标识信息为键值的缓存项记录在缓存服务中,缓存服务中同时存储的以网页的标识信息为键值的缓存项的数目有限,散列算法的特性保证了冲突的概率极低;虽然求取散列值可能存在误识别率,会造成假正例判定,也就是可能会出现检索缓存服务的时候,没有查找到实际上保存在缓存服务中的网页的标识信息,但是从整个方法流程而言,即便错判阻挡了对对应网页的一次爬取,但是后续还可以再对该网页进行再次爬取。
在一种可选的实施例中,假如过滤器服务为布隆过滤器服务,待验证的网页的标识信息为网页的URL,则处理爬取网页的方法流程图可以如图2所示,首先由爬虫服务器获取待爬取网页也就是待验证网页的URL,然后检测缓存服务中是否存在以待验证的网页的URL为键值的缓存项,如果存在,则对待验证的网页的爬取任务结束,如果不存在,则检测布隆过滤器服务中是否存在待验证的网页的URL,如果存在,说明待验证的网页已经被爬取过,则对待验证的网页的爬取任务结束,如果不存在,则在缓存服务中记录以待验证的网页的URL为键值的缓存项,然后由爬虫客户端根据待验证的网页的URL对待验证的网页进行爬取,如果爬取失败或发生其他状况使爬取的待验证的网页的页面内容没有发送至爬虫服务器或者没有及时发送至爬虫服务器,则对待验证的网页的爬去任务结束,如果爬取的待验证的网页的页面内容成功发送至爬虫服务器,则由爬虫服务器对爬虫客户端发送的对待验证的网页的爬取结果进行验证,如果验证未通过,则删除缓存服务中记录的以待验证的网页的URL为键值的缓存项,然后对爬取内容进行后续处理,如果验证通过,则在布隆过滤器服务中记录待验证的网页的URL,之后删除缓存服务中记录的以待验证的网页的URL为键值的缓存项,然后对爬取内容进行后续处理;其中,该实施例中检测缓存服务中是否存在以待验证的网页的URL为键值的缓存项、检测布隆过滤器服务中是否存在待验证的网页的URL以及在布隆过滤器服务中不存在待验证的网页的URL时在缓存服务中记录以待验证的网页的URL为键值的缓存项的步骤构成了一个事务,针对一个待验证的网页的URL,最多只能存在一个事务的操作。
实施例2
图3是根据本发明实施例2的处理爬取网页的装置示意图,如图3所示,该装置包括确定模块10、校验模块12和保存模块14。
确定模块10,用于确定是否存住待验证的网页的标识信息。
具体的,在对一个网页进行验证之前,不能确定该网页是否已经被爬取过,也就是存在已经被爬取过和还没有被爬取过两种可能性,需要注意的是,本发明所要解决的是现有技术中防止爬虫系统重复爬取网页时,爬取内容校验不通过但网页无法被再次爬取的技术问题,因此本发明中的提到的网页都只需被爬取一次,如果网页已经被爬取过,那么就不需要再次爬取,因此在确定要对一个网页进行爬取前,需要首先验证该网页是否被爬取过,只有在没有被爬取过的情况下,才进一步的根据待验证的网页的标识信息进行爬取,因此确定模块10确定是否存在待验证的网页的标识信息实际上包括两层含义,第一层含义为确定是否存在待验证的网页,第二层含义为在确定存在待验证的网页后,确定是否存在待验证的网页的标识信息。
可选的,待验证的网页的标识信息包括但不仅限于待验证的网页的地址信息,其中地址信息包括但不仅限于待验证的网页的URL、域名等。
校验模块12,用于根据待验证的网页的标识信息爬取得到网页页面之后,校验爬取得到的网页页面。
具体的,在确定模块10确定是否存在待验证的网页的标识信息之后,爬虫系统可以根据待验证的网页的标识信息对该网页进行爬取,其中爬虫系统包括爬虫客户端和爬虫服务器,待验证的网页的标识信息被交由某一个爬虫客户端,爬虫客户端根据待验证的网页的标识信息爬取相应的网页,在爬取得到网页页面后,发送给爬虫服务器,由爬虫服务器中的校验模块12对爬取得到的网页页面进行校验。
需要注意的是,对爬虫客户端来说,由于各种故障,爬取网页后可能不是一定能够得到网页页面,或者得到网页页面后由于通信故障不一定能够将网页页面发送给爬虫服务器或者不一定能够及时的将网页页面发送给爬虫服务器,在上述情况下,爬虫服务器的校验模块12不能获取到根据待验证的网页的标识信息爬取得到的网页页面,但是此时该网页的标识信息还没有被记录在过滤器服务中,因此还是可以对该网页进行再次验证以及爬取,还是能够避免现有技术中漏爬的现象。
保存模块14,用于在爬取得到的网页页面校验通过的情况下,确定待验证的网页爬取成功,并将爬取成功的待验证的网页的标识信息保存至过滤器服务。
具体的,校验模块12对爬取得到的网页页面进行校验后,存在校验通过和校验不通过两种情况,在校验通过的情况下,确定待验证的网页爬取成功,在校验不通过的情况下,确定待验证的网页爬取失败。如果待验证的网页爬取成功,则调用保存模块14,将相应的网页标识信息保存至过滤器服务,相应的,如果待验证的网页爬取失败,则相应的网页的标识信息不会保存在过滤器服务中,此处需要说明的是,过滤器服务可以用于检索一个元素是否在一个集合中,但是却无法删除一个集合中的特定值,使用在本发明中,如果过滤器服务不为空,则集合指的是过滤器服务中已经存储的至少一个网页的标识信息,元素则是指特定网页的标识信息,因此保存模块14将爬取成功的待验证的网页的标识信息保存至过滤器服务后,就表示相应的网页已经被爬取过,以后通过在过滤器服务中进行简单的检索,就可以避免对该网页再次进行爬取,而爬取失败的待验证的网页由于没有被保存至过滤器服务,在下次对该网页进行爬取时,由于过滤器服务中没有该网页的标识信息的记录,表示该网页还没有被爬取过,可以被爬取。
上述保存模块14只将爬取成功的待验证的网页的标识信息记录在过滤器服务中,能够保证过滤器服务中记录的标识信息对应的网页一定都是爬取成功的网页,而非现有技术中过滤器服务中的记录的标识信息对应的网页可能有爬取失败的网页,进一步提高了过滤器服务的可靠性。
可选的,本发明中的过滤器服务优选为高可用的过滤器服务,其中高可用的过滤器能够在对过滤器访问失败的情况下,仅需重新访问过滤器服务即可,本发明中的过滤器服务包括但不仅限于布隆过滤器服务,需要注意的是,布隆过滤器的空间效率和查询时间都远远超过一般的算法,但是也存在一定的误识别率和删除困难,因此本发明的过滤器也可以包括布隆过滤器的一些变种。
上述实施例采用先校验网页页面后在过滤器服务中记录网页的标识信息的方式,通过校验模块12校验根据待验证的网页的标识信息爬取得到的网页页面,在校验通过的情况下,确定待验证的网页爬取成功,然后保存模块14才将待验证的网页的标识信息保存至过滤器服务,达到了在防止爬虫系统重复爬取网页的同时保证网页不被漏爬的目的,从而实现了不漏爬网页的技术效果,进而解决了现有技术中在防止爬虫系统重复爬取网页时,爬取内容校验不通过但网页无法被再次爬取的技术问题。
在一种可选的实施例中,结合图4所示,确定模块10包括第一确定模块20,用于确定缓存服务中是否存在以待验证的网页的标识信息为键值的缓存项。
在一种可选的实施例中,结合图5所示,确定模块10还包括第二确定模块22,与第一确定模块20连接,用于当缓存服务中不存在以待验证的网页的标识信息为键值的缓存项时,确定过滤器服务中是否存在待验证的网页的标识信息。
在一种可选的实施例中,结合图6所示,确定模块10还包括第一保存模块24,与第二确定模块22连接,用于当过滤器服务中不存在待验证的网页的标识信息时,将以待验证的网页的标识信息为键值的缓存项保存至缓存服务。
在一种可选的实施例中,结合图7所示,上述装置还包括第一删除模块16,与保存模块14连接,用于在保存模块14将爬取成功的待验证的网页的标识信息保存至过滤器服务之后,从缓存服务中删除以待验证的网页的标识信息为键值的缓存项。
在一种可选的实施例中,结合图8所示,上述装置还包括第二删除模块18,与校验模块12连接,用于在校验爬取得到的网页页面不通过的情况下,从缓存服务中删除以待验证的网页的标识信息为键值的缓存项。
在一种可选的实施例中,结合图9所示,校验模块12包括第一校验模块30和第二校验模块32,其中第一校验模块30用于校验爬取得到的网页页面是否为无法访问网页,第二校验模块32用于校验爬取得到的网页页面内容是否与预期一致。
在一种可选的实施例中,结合图10所示,保存模块14包括计算模块40和第二保存模块42,其中计算模块40用于计算得到待验证的网页的标识信息的散列值;第二保存模块42用于将以计算得到待验证的网页的标识信息的散列值散为键值的缓存项保存至缓存服务。
实施例3
图11是根据本发明实施例3的处理爬取网页的系统示意图,如图11所示,该系统包括爬虫客户端和爬虫服务器。
爬虫客户端50,用于根据待验证的网页的标识信息爬取得到网页页面。
爬虫服务器60,与爬虫客户端50通信,用于校验爬取得到的网页页面,在爬取得到的网页页面校验通过的情况下,将爬取成功的待验证的网页的标识信息保存至过滤器。
具体的,上述爬取客户爬虫客户端50和爬虫服务器60共同构成了爬虫系统,其中爬虫系统可以是分布式爬虫系统,优选为Zookeeper管理分布式锁的分布式爬虫系统。
上述实施例采用先校验网页页面后在过滤器服务中记录网页的标识信息的方式,由爬虫客户端首先根据待验证的网页的标识信息对网页进行爬取得到网页页面,由爬虫服务器校验根据待验证的网页的标识信息爬取得到的网页页面,在校验通过的情况下,确定待验证的网页爬取成功,然后才将待验证的网页的标识信息保存至过滤器服务,通过上述实施例,本发明达到了在防止爬虫系统重复爬取网页的同时保证网页不被漏爬的目的,从而实现了不漏爬网页的技术效果,进而解决了现有技术中在防止爬虫系统重复爬取网页时,爬取内容校验不通过但网页无法被再次爬取的技术问题。
在一种可选的实施例中,系统还配置有过滤器和缓存器,通过上述内容可知,过滤器用于提供过滤器服务,具体用于保存爬取成功的待验证的网页的标识信息,缓存器用于提供缓存服务,具体用于用来保存以待验证的网页的标识信息为键值的缓存项。
可选的,本发明中的过滤器服务优选为高可用的过滤器服务,其中高可用的过滤器能够在对过滤器访问失败的情况下,仅需重新访问过滤器服务即可,本发明中的过滤器服务包括但不仅限于布隆过滤器服务,需要注意的是,布隆过滤器的空间效率和查询时间都远远超过一般的算法,但是也存在一定的误识别率和删除困难,因此本发明的过滤器也可以包括布隆过滤器的一些变种。
可选的,本发明中的缓存服务优选为高可用的缓存服务,其中高可用的缓存服务能够在访问缓存服务失败的情况下,仅需重新访问缓存服务即可,本发明中的缓存服务包括但不限于Redis缓存服务。
在一种可选的实施例中,上述爬虫客户端50和爬虫服务器60的功能可以集成在一个服务器中实现,在这种情况下,服务器也可以执行上述爬虫客户端50的动作,即根据待验证的网页的标识信息爬取得到网页页面。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种处理爬取网页的方法,其特征在于,包括:
确定是否存在待验证的网页的标识信息;
根据所述待验证的网页的标识信息爬取得到网页页面之后,校验所述爬取得到的网页页面;
在所述爬取得到的网页页面校验通过的情况下,确定所述待验证的网页爬取成功;
将爬取成功的所述待验证的网页的标识信息保存至过滤器服务。
2.根据权利要求1所述的方法,其特征在于,确定是否存在待验证的网页的标识信息,包括:
确定缓存服务中是否存在以所述待验证的网页的标识信息为键值的缓存项。
3.根据权利要求2所述的方法,其特征在于,确定缓存服务中是否存在以所述待验证的网页的标识信息为键值的缓存项,包括:
当所述缓存服务中不存在以所述待验证的网页的标识信息为键值的缓存项时,确定所述过滤器服务中是否存在所述待验证的网页的标识信息;
当所述缓存服务中存在以所述待验证的网页的标识信息为键值的缓存项时,不再对所述待验证的网页的标识信息进行进一步操作。
4.根据权利要求3所述的方法,其特征在于,确定所述过滤器服务中是否存在所述待验证的网页的标识信息,包括:
当所述过滤器服务中不存在所述待验证的网页的标识信息时,将以所述待验证的网页的标识信息为键值的缓存项保存至所述缓存服务;
当所述过滤器服务中存在所述待验证的网页的标识信息时,确定所述待验证的网页已经被爬取过,不再对所述待验证的网页的标识信息进行进一步操作。
5.根据权利要求4所述的方法,其特征在于,将爬取成功的所述待验证的网页的标识信息保存至过滤器服务之后,还包括:
从所述缓存服务中删除以所述待验证的网页的标识信息为键值的缓存项。
6.根据权利要求4所述的方法,其特征在于,校验所述爬取得到的网页页面,还包括:
在校验所述爬取得到的网页页面不通过的情况下,从所述缓存服务中删除以所述待验证的网页的标识信息为键值的缓存项。
7.根据权利要求4所述的方法,其特征在于,将以所述待验证的网页的标识信息为键值的缓存项保存至所述缓存服务,包括:
计算得到所述待验证的网页的标识信息的散列值;
将以所述计算得到所述待验证的网页的标识信息的散列值散为键值的缓存项保存至所述缓存服务。
8.根据权利要求1-7任一项所述的方法,其特征在于,校验所述爬取得到的所述网页页面,包括:
校验所述爬取得到的所述网页页面是否为无法访问所述网页,和/或;
校验所述爬取得到的所述网页页面内容是否与预期一致。
9.一种处理爬取网页的装置,其特征在于,包括:
确定模块,用于确定是否存在待验证的网页的标识信息;
校验模块,用于根据所述待验证的网页的标识信息爬取得到网页页面之后,校验所述爬取得到的网页页面;
保存模块,用于在所述爬取得到的网页页面校验通过的情况下,确定所述待验证的网页爬取成功;并将爬取成功的所述待验证的网页的标识信息保存至过滤器服务。
10.根据权利要求9所述的装置,其特征在于,所述确定模块包括:
第一确定单元,用于确定缓存服务中是否存在以所述待验证的网页的标识信息为键值的缓存项;
第二确定单元,用于当所述缓存服务中不存在以所述待验证的网页的标识信息为键值的缓存项时,确定所述过滤器服务中是否存在所述待验证的网页的标识信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611089740.2A CN108132948B (zh) | 2016-11-30 | 2016-11-30 | 处理爬取网页的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611089740.2A CN108132948B (zh) | 2016-11-30 | 2016-11-30 | 处理爬取网页的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108132948A true CN108132948A (zh) | 2018-06-08 |
CN108132948B CN108132948B (zh) | 2021-02-26 |
Family
ID=62387509
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611089740.2A Active CN108132948B (zh) | 2016-11-30 | 2016-11-30 | 处理爬取网页的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108132948B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109918554A (zh) * | 2019-02-13 | 2019-06-21 | 平安科技(深圳)有限公司 | 网页数据爬取方法、装置、系统及计算机可读存储介质 |
CN110007842A (zh) * | 2019-04-18 | 2019-07-12 | 北京冠群信息技术股份有限公司 | 网页内容选取方法及装置 |
CN110968779A (zh) * | 2018-09-30 | 2020-04-07 | 北京国双科技有限公司 | 网页信息爬取的处理方法和装置 |
CN111741065A (zh) * | 2020-05-18 | 2020-10-02 | 北京直真科技股份有限公司 | 一种批量cdn资源缓存自动化装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100076954A1 (en) * | 2003-07-03 | 2010-03-25 | Daniel Dulitz | Representative Document Selection for Sets of Duplicate Dcouments in a Web Crawler System |
CN101739401A (zh) * | 2008-11-26 | 2010-06-16 | 富士通株式会社 | 网络搜索方法和设备 |
CN102314463A (zh) * | 2010-07-07 | 2012-01-11 | 北京瑞信在线系统技术有限公司 | 分布式爬虫系统及其提取网页数据的方法 |
CN104035923A (zh) * | 2013-03-04 | 2014-09-10 | 阿里巴巴集团控股有限公司 | 查询数据的方法及装置 |
CN104408182A (zh) * | 2014-12-15 | 2015-03-11 | 北京国双科技有限公司 | 分布式系统上网络爬虫数据的处理方法和装置 |
CN104820680A (zh) * | 2015-04-17 | 2015-08-05 | 南京大学 | 一种通用型分布式爬虫调度系统 |
-
2016
- 2016-11-30 CN CN201611089740.2A patent/CN108132948B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100076954A1 (en) * | 2003-07-03 | 2010-03-25 | Daniel Dulitz | Representative Document Selection for Sets of Duplicate Dcouments in a Web Crawler System |
CN101739401A (zh) * | 2008-11-26 | 2010-06-16 | 富士通株式会社 | 网络搜索方法和设备 |
CN102314463A (zh) * | 2010-07-07 | 2012-01-11 | 北京瑞信在线系统技术有限公司 | 分布式爬虫系统及其提取网页数据的方法 |
CN104035923A (zh) * | 2013-03-04 | 2014-09-10 | 阿里巴巴集团控股有限公司 | 查询数据的方法及装置 |
CN104408182A (zh) * | 2014-12-15 | 2015-03-11 | 北京国双科技有限公司 | 分布式系统上网络爬虫数据的处理方法和装置 |
CN104820680A (zh) * | 2015-04-17 | 2015-08-05 | 南京大学 | 一种通用型分布式爬虫调度系统 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110968779A (zh) * | 2018-09-30 | 2020-04-07 | 北京国双科技有限公司 | 网页信息爬取的处理方法和装置 |
CN109918554A (zh) * | 2019-02-13 | 2019-06-21 | 平安科技(深圳)有限公司 | 网页数据爬取方法、装置、系统及计算机可读存储介质 |
CN110007842A (zh) * | 2019-04-18 | 2019-07-12 | 北京冠群信息技术股份有限公司 | 网页内容选取方法及装置 |
CN111741065A (zh) * | 2020-05-18 | 2020-10-02 | 北京直真科技股份有限公司 | 一种批量cdn资源缓存自动化装置 |
CN111741065B (zh) * | 2020-05-18 | 2022-03-08 | 北京直真科技股份有限公司 | 一种批量cdn资源缓存自动化装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108132948B (zh) | 2021-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101582887B (zh) | 安全防护方法、网关设备及安全防护系统 | |
US9680850B2 (en) | Identifying bots | |
CN108932426B (zh) | 越权漏洞检测方法和装置 | |
CN108132948A (zh) | 处理爬取网页的方法和装置 | |
CN106888211A (zh) | 一种网络攻击的检测方法及装置 | |
CN105939326A (zh) | 处理报文的方法及装置 | |
Mariconti et al. | What's in a name? understanding profile name reuse on twitter | |
CN104640114B (zh) | 一种访问请求的验证方法及装置 | |
CN104580230B (zh) | 网站攻击验证方法及装置 | |
CN110035075A (zh) | 钓鱼网站的检测方法、装置、计算机设备及存储介质 | |
CN107147748A (zh) | 文件上传方法和装置 | |
CN108090091A (zh) | 网页爬取方法和装置 | |
US7590698B1 (en) | Thwarting phishing attacks by using pre-established policy files | |
CN104239353B (zh) | 一种web分类控制和日志审计的方法 | |
CN108449368A (zh) | 一种应用层攻击检测方法、装置和电子设备 | |
CN107819579A (zh) | 一种用户请求的处理方法、服务器及计算机可读存储介质 | |
US10693897B2 (en) | Behavioral and account fingerprinting | |
CN106878345A (zh) | 一种篡改防护的方法及装置 | |
CN101576947B (zh) | 文件防护处理方法、装置及系统 | |
CN109474569A (zh) | 一种检测web缓存欺骗的方法及系统 | |
CN101901307B (zh) | 一种检测数据库是否遭到跨站脚本攻击的方法及装置 | |
CN106612283B (zh) | 一种识别下载文件来源的方法及装置 | |
CN107294986B (zh) | 一种访问https网站的方法、装置及系统 | |
CN111885088A (zh) | 基于区块链的日志监测方法及装置 | |
CN106888210A (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 | ||
CB02 | Change of applicant information |
Address after: 100083 No. 401, 4th Floor, Haitai Building, 229 North Fourth Ring Road, Haidian District, Beijing Applicant after: Beijing Guoshuang Technology Co.,Ltd. Address before: 100086 Cuigong Hotel, 76 Zhichun Road, Shuangyushu District, Haidian District, Beijing Applicant before: Beijing Guoshuang Technology Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |