CN110062025B - 数据采集的方法、装置、服务器及存储介质 - Google Patents
数据采集的方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN110062025B CN110062025B CN201910195036.2A CN201910195036A CN110062025B CN 110062025 B CN110062025 B CN 110062025B CN 201910195036 A CN201910195036 A CN 201910195036A CN 110062025 B CN110062025 B CN 110062025B
- Authority
- CN
- China
- Prior art keywords
- proxy
- target
- proxy server
- queue
- server
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
Abstract
本申请实施例提供一种数据采集的方法、装置、服务器及存储介质。该方法包括:获取第一阈值数量的线程,将待采集的网站地址放入任务队列;获取第二阈值数量的代理服务器,将所述代理服务器添加至代理队列;从所述代理队列中取出目标代理服务器;调用所述线程中的目标线程执行通过所述目标代理服务器访问从所述任务队列当中取出的目标网站地址对应的页面。本方法通过队列的方式使用代理服务器,可以防止同一个代理服务器同时被多个数据采集进程使用,从而可以提升数据采集的效率。
Description
技术领域
本申请涉及互联网技术领域,更具体地,涉及一种数据采集的方法、装置、服务器及存储介质。
背景技术
伴随着计算机科学技术的发展,越来越多的公司将数据发布到互联网当中,数据作为人工智能、用户画像以及舆情分析等领域的基石,如何高效、准确的去获取互联网中公开的数据成为了一个日益重要的问题。数据的采集方总是希望可以在短时间内在互联网当中采集准确的数据,但是由于网络爬虫会对网站造成一定的访问压力,有些网站会采取一些反爬虫策略来应对爬虫,即当网站检测出爬虫的时候,会禁止爬虫访问或返回错误的数据给爬虫,这样会严重降低采集到的数据的完整性和准确性。其中,如果想要大规模地去采集数据,通常会使用代理服务器去采集数据(采集数据的时候把数据请求发送给代理服务器,代理服务器把请求发送给目标网站,目标网站将数据返回给代理服务器,代理服务器将数据返回),但是代理服务器会有一定的生命周期,在使用一段时间后会失效,并且通过同一个代理服务器访问网站的次数过多也会被网站检测到而被阻止,且获取代理服务器具有一定的成本,因此如何有效的使用代理服务器获取网站地址的页面信息,提高代理服务器的使用周期,是当前需要解决的问题。
发明内容
有鉴于此,本申请实施例提供一种数据采集的方法、装置、服务器及存储介质,以实现改善上述问题。
第一方面,本申请实施例提供了一种数据采集的方法,该方法包括:获取第一阈值数量的线程,将待采集的网站地址放入任务队列;获取第二阈值数量的代理服务器,将代理服务器添加至代理队列;从代理队列中取出目标代理服务器;调用线程中的目标线程执行通过目标代理服务器访问从任务队列当中取出的目标网站地址对应的页面。
第二方面,本申请实施例提供了一种数据采集的装置,该装置包括数据采集模块,该数据采集模块包括:第一获取模块,用于获取第一阈值数量的线程,将待采集的网站地址放入任务队列;第二获取模块,用于获取第二阈值数量的代理服务器,将代理服务器添加至代理队列;取出模块,用于从代理队列中取出目标代理服务器;访问模块,用于调用线程中的目标线程执行通过目标代理服务器访问从任务队列当中取出的目标网站地址对应的页面。
第三方面,本申请实施例提供了一种服务器,包括存储器,一个或多个处理器;一个或多个程序被存储在存储器中并被配置为由一个或多个处理器执行,一个或多个程序配置用于执行上述第一方面的数据采集的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有程序代码,其中,在程序代码由处理器运行时执行上述第一方面的数据采集的方法。
相对于现有技术,本申请实施例提供的一种数据采集的方法、装置、服务器及存储介质,通过获取第一阈值数量的线程,再将待采集的网站地址放入任务队列;继而获取第二阈值数量的代理服务器,再将代理服务器添加至代理队列;然后从代理队列中取出目标代理服务器;调用线程中的目标线程执行通过目标代理服务器访问从任务队列当中取出的目标网站地址对应的页面。本方法通过队列的方式使用代理服务器,可以防止同一个代理服务器同时被多个数据采集进程使用,从而可以提升数据采集的效率。
为了让本申请的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请实施例提供的代理管理系统的架构图。
图2示出了本申请另一实施例提供的数据采集的方法的流程图。
图3示出了本申请又一实施例提供的数据采集的方法的一具体示例图。
图4示出了本申请又一实施例提供的数据采集的装置的结构框图。
图5示出了图4中的数据采集模块310的结构框图。
图6示出了图4中的代理管理模块320的结构框图。
图7示出了本申请又一实施例提供的一种服务器的结构框图。
图8示出了本申请又一实施例的用于保存或者携带实现根据本申请实施例的数据采集的方法的程序代码的存储单元。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
随着网络的迅速发展与大数据时代的到来,网络已成为大量信息的载体,人们对数据资源的需求也越来越多,而网络爬虫是一种很好的自动采集网络数据的手段。由于网络爬虫会对网站造成一定的访问压力,有些网站会采取一些反爬虫策略来应对网络爬虫,当网站检测出爬虫的时候,会禁止爬虫访问或者返回错误的数据给爬虫。针对网站对网络爬虫的检测方法,产生出了一些反爬虫策略,如随机更换http请求头部、使用代理服务器访问目标页面、降低访问频次以及使用模拟浏览器访问等。由于大部分网站都有基于IP检测爬虫的策略,随机更换http请求头部、使用模拟浏览器访问等不改变IP的方法,依然会被网站检测出来;如果单位时间内的降低访问频次,会导致采集数据的速度变慢;若想要大规模地去采集数据,通常情况下都会使用代理服务器(Proxy Server)去采集数据。
在网络上会有一些公开的代理服务器,也有一些代理服务器的供应商会提供代理服务器,可以通过这些渠道去获取代理服务器。作为一种方式,可以通过构建代理池,从代理池中随机选取一个代理服务器。但是在多线程的情况下,同一个代理服务器可能会同时被多个线程选用,造成短时间内同一个代理服务器多次访问网站,容易被网站检测出来,缩短了代理服务器的生命周期,并且这些代理池都无法跟数据采集程序结合,当数据采集失败之后不能将数据采集的结果返回到代理池中(例如在采集数据的时候发现代理服务器已经失效了,但是这个信息没法反馈给代理池),且没有一种评估代理服务器的质量的方法。
此外,每次数据采集时都需要跟代理池进行交互,获取代理服务器的信息,这样频繁地交互会影响数据采集的效率。作为另外一种方式,也有一些均衡使用代理服务器的方式是在数据采集程序初始化的时候就将所有的代理服务器都加载到程序当中,但当所有的代理服务器都失效之后没办法去获取新的代理服务器。并且代理服务器的处理过程与数据采集程序是同步处理,即数据采集之后必须等待代理服务器处理完成之后才能进行下一次的数据采集,那么这样也会影响数据采集的效率。
因此,发明人发现上述使用代理服务器的方式会对数据采集的效率产生影响从而给用户带来不便的技术问题之后,提出了本申请实施例提供的数据采集的方法、装置、服务器及存储介质。
为了便于详细说明本申请方案,下面先结合附图对本申请实施例所涉及的数据采集的方法中的应用环境(即代理管理系统)进行介绍。
需要说明的是,作为一种方式,本申请实施例中采用的是由包括代理管理模块和数据采集模块组成的代理管理系统,本申请实施例中代理管理模块可以理解为代理池,代理管理模块和数据采集模块之间相互独立,可以提高数据采集的效率。数据采集模块可以通过http接口访问代理管理模块,代理管理模块可以从外网获取可用的代理IP,并对代理IP进行存储以及校验与代理IP对应的代理服务器的信息、排列IP地址等。当有需要时,数据采集模块可以根据任务需求使用代理服务器去网站采集对应的数据信息。
如图1所示,代理管理模块主要包括采集单元11、校验单元12、数据库单元13以及接口单元。其中,采集单元11用于采集代理IP,校验单元 12用于对采集到的代理IP进行校验,数据库单元13用于对获取到的代理 IP的信息进行持久化存储,接口单元(例如,http接口)用于给数据采集模块提供代理服务器的信息以及修改代理服务器的评分。
作为一种方式,可以通过一些互联网协议(如TCP/IP协议、UDP协议及FTP协议等)去采集公开的代理IP地址,当数据库单元13中的代理服务器的数量少于一定的阈值(例如,少于1000个代理服务器,具体数值可以根据实际情况调整)时可以触发采集单元11开始在网络上采集公开的代理IP,采集单元11在获取到代理IP之后可以将这些代理IP的信息发送至校验单元12进行校验。
作为一种方式,校验单元12可以通过采集到的代理IP的地址进入与 IP地址对应的代理服务器,继而可以通过该代理服务器去访问一个指定网站(即访问一个可以支撑同一代理IP高频次访问的网站,例如百度),如果能够获取得到预期的访问结果,那么则可以将对应的代理服务器的信息存入到数据库单元13中。可选的,数据库单元13中的代理服务器的信息可以以(IP,port,score)的结构存储,其中,IP表征代理服务器的IP 地址,port表征代理服务器的端口,score表征校验单元12对代理服务器的评分。例如,对于第一次就成功采集到用户访问需求数据的代理服务器的评分可以是100分(此种情况下,最高分为100分)。
校验单元12可以对数据库单元13中存储的所有代理IP地址进行校验。作为一种方式,校验单元12可以通过使用与IP地址对应的代理服务器去访问指定网站,若不能够得到预期的访问结果,校验单元12可以将代理服务器的评分降低;可选的,校验单元12可以删除低于一定评分的代理IP 信息。
接口单元可以对数据库单元13中存储的代理IP地址按照评分高低进行排列,当数据采集模块发送IP地址需求信息时,接口单元可以优先选择评分高的代理服务器反馈给数据采集模块。
数据采集模块包括代理队列、任务队列、采集单元21、校验单元22 以及数据库单元23。其中,代理队列可以用于存储代理IP,代理队列中的代理服务器的数量大于任务队列中的任务(即采集单元的任务)数量;任务队列可以用于排列任务,可以理解为将用户需要采集的数据对应的网址信息进行排列,数据采集模块可以将排列好的任务与代理IP地址进行匹配;采集单元21可以用于通过代理IP对应的代理服务器访问与代理IP对应的网站地址,获取与该网站地址对应的数据信息,并通过对应网站内容解释代码,获得解析后的数据信息。
作为一种方式,采集单元21中的线程可以包括代理IP、网站地址信息以及对网站内容的解析代码。校验单元22可以用于校验采集单元21中采集到的数据信息是否达到预期的访问结果,可选的,若达到,那么可以将对应的数据信息发送至数据库单元23中存储,同时可以将对应的代理 IP地址发送至代理队列(表示代理IP通过校验,可以用于后续的数据采集)。可选的,若未达到,那么可以将对应的代理IP反馈至接口单元,此种情况下,接口单元将降低对应的代理IP的代理服务器的评分,并将降低了评分的代理IP的地址信息反馈至数据库单元13;与此同时,校验单元还可以将未达到与其访问结果的任务对应的网址信息发送至任务队列,用于进行再一次的代理IP地址匹配,并再次进行数据信息的采集。
下面将结合附图具体描述本申请的各实施例。
请参阅图2,为本申请另一实施例提供的一种数据采集的方法的流程图,本实施例提供一种数据采集的方法,所述方法包括:
步骤S110:获取第一阈值数量的线程,将待采集的网站地址放入任务队列。
作为一种方式,可以根据从外网获取的代理IP对应的代理服务器的网络性能(包括代理服务器的数据采集速度,响应时间或实际运行情况等)初始化第一阈值数量的线程,需要说明的是,本实施例中的这些线程为新的空线程。为了防止多线程的情况下同一个代理服务器同时被多个数据采集进程使用,从而导致代理服务器被反爬虫策略检测到,可以创建任务队列,将待采集的网站地址放入任务队列,得到包括第一阈值数量线程的任务队列。其中,待采集的网站地址包括用户需要采集的网站地址。
其中,第一阈值数量线程包括至少一个线程,第一阈值可以由用户自定义,也可以根据运行情况自动配置,在此不作限定。可选的,使用任务队列来管理待采集的网站地址,当使用代理服务器去访问任务队列里面的待采集网站地址时,任务队列采用先进先出的模式,从作为爬取入口的http请求开始,解析对应待采集页面,从该待采集页面抽取出其包含的要爬取的下一个待采集网站地址的集合,构成http请求。作为一种方式,可以用httpClient新建 http请求,并将http请求加入任务队列。
可选的,本实施例的通过队列的方式使用代理服务器,可以防止同一个代理服务器同时被多个数据采集进程使用,可以提升数据采集的效率。
步骤S120:获取第二阈值数量的代理服务器,将所述代理服务器添加至代理队列。
作为一种方式,代理池存储有预先采集的可用的若干代理服务器,可以通过http请求向代理池获取第二阈值数量的代理服务器,并将获取的代理服务器进行随机排序后添加至代理队列。其中,为了保证代理队列中有足够多的代理可以使用,本实施例中的第二阈值大于第一阈值。
可选的,代理池中存储有可以成功采集数据的代理服务器。当从网络中获取了待检测的代理服务器之后,可以对采集的待检测的代理服务器进行校验,即对于需要添加至代理队列中的代理服务器,可以对代理服务器的可用性进行检测。在一种实施方式中,可以通过代理队列中的代理服务器去访问指定网站,判断是否访问成功,根据访问结果(例如是否能采集到正确的与指定网站对应的页面数据或访问结果是否满足用户的预期等)来判定代理服务器是否可用。
例如,可以使用代理服务器去高频次访问百度,根据代理服务器的访问速度或是否能够成功访问到用户期望的网站页面的内容判定代理服务器是否可用。可选的,若访问速度较快或可以访问到用户期望的网站页面数据,那么可以判定访问成功,可以将该代理服务器保留,并将该代理服务器放回代理队列;若访问速度较慢或不能访问到用户期望的网站页面数据,或者说无法正常访问,那么则判定访问未成功,可以降低该代理服务器的评分,其中,评分可以用于表征代理服务器多次访问指定网站的成功率,继而将代理服务器放回代理队列,同时将待采集的网站地址“百度”放回任务队列,或者可以直接将该代理服务器从代理队列中删除。
在一个具体的应用场景中,假设需要采集淘宝平台的某一个商品的价格,但是采集的时候自动跳转去了淘宝登陆页面,这个时候就获取不到价格这个属性,可能会什么都采集不到,或者是采集到了错误的数据,则可以判定该代理服务器已失效,那么可以直接将该代理服务器从代理队列中删除,可以实现动态更新代理池中的代理服务器。相反,如果采集的时候跳转到了正确的页面,那么可以将该代理服务器进行保留,即将该代理服务器放回代理队列。
其中,被保留的代理服务器可以以(IP,port,score)的存储格式存储至代理池中。可选的,IP表示代理服务器的IP地址,不同的代理服务器的IP 地址不同,port指的是代理服务器的端口,score指的是代理管理模块对代理服务器的评分。作为一种方式,在对代理服务器的可用性进行检测的过程中,可以根据校验结果对代理服务器进行评分,可选的,如前所述,评分可以用于表征代理服务器多次访问指定网站的成功率,那么,不难理解的是,对于检测过程中响应速度快,访问成功率高的代理服务器可以获得较高的评分,而对于检测过程中响应速度慢,访问成功率低的代理服务器则会获得较低的评分。通过评分机制来管理代理服务器,可以实时评估代理服务器的质量。
值得注意的是,作为一种方式,还可以定期删除代理池中低于阈值分数评分的代理服务器,这样可以动态更新代理池中的代理服务器。
因此,代理队列中的代理服务器都是可用的代理服务器,由于在检测代理服务器是否可用的过程中会删除掉一些不可用的代理服务器,整个代理队列中的代理服务器的数量会下降,那么为了确保代理队列中有足够的可用代理服务器,可以实时对代理队列中的代理服务器的数量进行判断。作为一种方式,可以判断代理队列中的代理服务器的数量是否小于第一预设阈值,需要说明的是,为了防止同一个代理服务器同时被多个线程选用,本实施例中的第一预设阈值不小于第一阈值。可选的,若代理队列中代理服务器的数量小于第一预设阈值,那么可以向代理池请求获取不低于第一预设阈值数量的代理服务器,并将获取到的代理服务器进行随机排序后添加至代理队列,即当代理池中的代理服务器少于一定数量之后可以主动去获取代理服务器,可以确保代理队列中有足够可用的代理服务器,进而可以提升数据采集的效率。
可选的,若代理队列中代理服务器的数量不小于第一预设阈值,那么可以从代理队列中取出目标代理服务器,用以访问与任务队列中待采集的网站地址对应的页面,其中,获取目标代理服务器的描述可以参照如下步骤S130中的描述。
步骤S130:从所述代理队列中取出目标代理服务器。
可选的,可以将代理服务器的评分按照评分高低进行排列,作为一种方式,可以是由高到低的排列方式,也可以是由低到高的排列方式。当需要使用代理服务器访问页面时,可以向代理池发送代理服务器的需求信息,继而可以从代理池中获取第二阈值数量的评分高于阈值分数的代理服务器,即代理池可以优先选择评分高的代理服务器。
那么,可以理解的是,代理队列中存储的代理服务器相较于代理池中的代理服务器,都是评分相对较高的代理服务器,这些代理服务器的数据采集成功率也较高,因此,可以从代理队列中任意取出一个代理服务器作为目标代理服务器。
步骤S140:调用所述线程中的目标线程执行通过所述目标代理服务器访问从所述任务队列当中取出的目标网站地址对应的页面。
可选的,在访问目标网站地址对应的页面之前,需要先从任务队列中随机获取一个待采集的网站地址作为目标网站地址,为了提高采集的效率,可以先验证目标网站地址是否为有效的网站地址。作为一种方式,任务队列中可以对目标网站地址对应的页面的历史访问记录进行存储,对于需要进行访问的目标网站地址,可以判断目标网站地址对应的页面的历史访问失败的次数是否大于第二预设阈值。
其中,需要说明的是,首次访问某个页面失败之后可以重新访问,具体的,在使用代理服务器访问与待采集网站地址对应的页面时,可以先对访问到的页面数据是否达到预期结果进行校验,若达到时,则将这些访问到的页面数据进行存储,同时将该代理服务器的IP地址发送至队列单元,并进行相应存储;若未达到时,则可以将该代理服务器的IP地址反馈至代理池,将降低该代理服务器的评分并将降低后的评分结果进行存储,在此种情况下,还可以将该待采集网站地址发送至任务队列(也就是说,任务队列中存储有与待采集网站地址对应的页面的历史访问记录),用于再一次访问与该待采集网站地址对应的页面,并进行数据信息的采集。综上,如果访问次数超过一定的失败次数时才放弃这个页面,因此在对某个页面进行访问之前,可以先判断该页面的访问失败的次数是否大于预先设定的第二预设阈值。
作为一种方式,若大于,那么可以将该页面进行记录并存储,然后判断任务队列是否为空,若为空,则结束数据采集过程,否则执行获取第一阈值数量的线程,将待采集的网站地址放入任务队列,进入下一轮的数据采集;若不大于,则执行通过目标代理服务器,访问与线程中的目标线程从任务队列当中取出的目标网站地址对应的页面。
其中,需要说明的是,对于第二预设阈值,可以根据系统实际运行情况动态调配,若某页面采集失败的次数为若干次,那么则可以放弃对该页面的访问。
作为一种方式,可以从第一阈值数量线程中随机抽取一个线程作为目标线程,调用该目标线程执行通过上述目标代理服务器访问从任务队列当中取出的目标网站地址对应的页面,获取与页面对应的数据,继而判断页面是否访问成功。可选的,本实施例中,若页面访问成功,那么可以对网站内容进行解析,得到解析后的数据信息;若页面访问未成功,那么则可以将访问失败的信息发送给代理池,以便可以通过http请求降低该代理服务器的评分,此外,可以将该页面的访问失败次数增加,并将与该待采集网站地址对应的页面放回任务队列进行存储,以便于进行下一次访问。通过增加访问成功率不高的页面的失败次数,可以节约访问资源,提升数据采集效率。
可选的,对于访问成功的页面,还将对该页面的访问数据进行验证,验证获取的数据是否存在异常。例如,可以通过验证该数据是否为与待检测的网站地址对应的页面实际相关的数据,若是,则可以判定为正常数据,否则可以判定为异常数据,具体验证方式可以根据实际情况而作出调整,在此不作限定。
作为一种方式,若获取的数据存在异常,那么,可以将此结果反馈至代理池,将通过http请求降低该代理服务器的评分,具体过程可以参照上述降低评分的描述过程,在此不再赘述。
作为另一种方式,若获取的数据不存在异常,那么,将对这些数据进行存储。可选的,还将判断任务队列是否为空,可选的,若为空,则表示任务队列中的所有待采集网站地址均被采集,结束数据采集过程;若不为空,则执行获取第一阈值数量的线程,将待采集的网站地址放入任务队列的步骤,进入下一轮的数据采集。
需要说明的是,目标线程为至少一个,综上所述,本实施例克服了现有技术中的一次数据采集之后必须等待代理服务器处理完成之后才可以进行下一次数据采集,提升了数据采集的效率。
下面以图3为例,对本申请又一实施例中的方法进行示例性的说明:
请参阅图3,为本申请又一实施例提供的数据采集的方法的一具体数据采集流程,如图3所示,在数据采集初期,初始化n个爬虫线程,将待爬取页面放入任务队列当中,继而通过http请求向代理池获取2n个代理,将这2n个代理随机排序后添加到代理队列当中,由于对这些代理会进行验证,对于没有通过验证的代理会被删除,因此在对页面进行访问之前,会对代理队列中的数量进行判断,即判断代理队列中的代理数量是否小于n。
可选的,若小于,那么可以通过http请求向代理池重新获取n个代理,将n个代理随机排序后添加到代理队列当中;若不小于,那么由爬虫线程从任务队列当中取出一个页面,判断该页面的失败次数是否大于N,可以避免对页面访问失败率高的页面反复访问,从而浪费资源。作为一种方式,若大于,那么可以将该页面记录到,同时判断任务队列是否为空,若为空,那么可以结束数据采集过程,否则进入下一轮数据采集过程。
作为另一种方式,若不大于,那么可以在代理队列中取出一个代理IP,通过该代理IP去访问目标页面,继而判断访问是否成功,若访问成功,那么可以对访问得到的数据经解析,并验证数据是否存在异常。若存在异常,则可以通过http请求进行反馈,继而降低该代理服务器的评分,并将该页面的访问失败次数加一,然后将该页面放回任务队列当中,当判断代理队列中代理的数量不小于n时,进入该页面的下一轮数据采集流程。
可选的,若访问未成功,那么将降低该代理服务器的评分,同时也会将该页面的访问失败次数加一,然后将该页面放回任务队列当中,当判断代理队列中代理的数量不小于n时,进入该页面的下一轮数据采集流程。
本实施例提出的一种数据采集的方法,通过获取第一阈值数量的线程,将待采集的网站地址放入任务队列;获取第二阈值数量的代理服务器,将所述代理服务器添加至代理队列;从所述代理队列中取出目标代理服务器;调用所述线程中的目标线程执行通过所述目标代理服务器访问从所述任务队列当中取出的目标网站地址对应的页面。本方法通过队列的方式使用代理服务器,可以防止同一个代理服务器同时被多个数据采集进程使用,从而可以提升数据采集的效率。
请参阅图4,为本申请又一实施例提供的一种数据采集的装置的结构框图,本实施例提供一种数据采集的装置300,所述装置300包括:数据采集模块310以及代理管理模块320。
可选的,请参阅图5,数据采集模块310包括:第一获取模块311、第二获取模块312、取出模块313以及访问模块314:
第一获取模块311,用于获取第一阈值数量的线程,将待采集的网站地址放入任务队列。
第二获取模块312,用于获取第二阈值数量的代理服务器,将所述代理服务器添加至代理队列。
取出模块313,用于从所述代理队列中取出目标代理服务器。
访问模块314,用于调用所述线程中的目标线程执行通过所述目标代理服务器访问从所述任务队列当中取出的目标网站地址对应的页面。
可选的,数据采集模块310还包括判断模块,用于判断代理队列中的代理服务器的数量是否小于第一预设阈值。
可选的,数据采集模块310还包括第三获取模块,用于若代理队列中的代理服务器的数量小于第一预设阈值时,向代理池请求获取不低于第一预设阈值数量的代理服务器,将所述代理服务器排序后添加至所述代理队列,所述代理池中存储有成功采集数据的代理服务器。
作为一种方式,数据采集模块310还可以用于从网络中获取待检测的代理服务器;对待检测的代理服务器进行校验,在一种实现方式中,可以通过待检测的代理服务器访问指定网站,再判断访问是否成功,若成功,则可以判定校验成功;可选的,若校验成功,可以将待检测的代理服务器存储到代理池。在另一种实现方式中,可以定期对代理池中的代理服务器进行评分;删除代理池中低于阈值分数评分的代理服务器。
作为另一种方式,数据采集模块310还可以用于从代理池中获取第二阈值数量的评分高于阈值分数的代理服务器。
可选的,请参阅图6,代理管理模块320包括:第一获取单元321、校验单元322以及存储单元323:
第一获取单元321,用于从网络中获取待检测的代理服务器。
校验单元322,用于对所述待检测的代理服务器进行校验。
存储单元323,用于若校验成功,将所述待检测的代理服务器存储到所述代理池。
可选的,数据采集模块310的判断模块还可以用于判断上述页面是否访问成功;若访问成功,将代理服务器放回代理队列;若访问未成功,降低代理服务器的评分,评分用于表征代理服务器访问目标网站地址的成功率;将代理服务器放回代理队列,将待采集的网站地址放回任务队列。
作为一种方式,若访问成功,可以校验访问过程中采集到的与页面对应的数据是否存在异常;可选的,若存在,则可以降低代理服务器的评分,将待采集的网站地址放回任务队列;可选的,若不存在,那么可以将数据进行存储。
作为另一种方式,若访问成功,可以判断任务队列是否为空;若为空,则可以结束任务;否则执行从代理队列中取出目标代理服务器,调用线程中的目标线程执行通过目标代理服务器访问从任务队列当中取出的目标网站地址对应的页面。
可选的,数据采集模块310的判断模块还可以用于在从代理队列中取出目标代理服务器之后,判断目标网站地址对应的页面的访问失败的次数是否大于第二预设阈值;若大于,将页面进行记录;若不大于,则可以执行通过目标代理服务器,访问与线程中的目标线程从任务队列当中取出的目标网站地址对应的页面。
本实施例提出的一种数据采集的装置,通过获取第一阈值数量的线程,将待采集的网站地址放入任务队列;获取第二阈值数量的代理服务器,将所述代理服务器添加至代理队列;从所述代理队列中取出目标代理服务器;调用所述线程中的目标线程执行通过所述目标代理服务器访问从所述任务队列当中取出的目标网站地址对应的页面。通过队列的方式使用代理服务器,可以防止同一个代理服务器同时被多个数据采集进程使用,从而可以提升数据采集的效率。
需要说明的是,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,所显示或讨论的模块相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
请参阅图7,基于上述的数据采集的方法及装置,本申请又一实施例还提供了一种可以执行前述数据采集的方法的服务器400。服务器400包括存储器401以及相互耦合的一个或多个(图中仅示出一个)处理器402,存储器401以及处理器402之间通信线路连接。存储器401中存储有可以执行前述实施例中内容的程序,而处理器402可以执行存储器401中存储的程序。
其中,处理器402可以包括一个或者多个处理核。处理器402利用各种接口和线路连接整个服务器100内的各个部分,通过运行或执行存储在存储器401内的指令、程序、代码集或指令集,以及调用存储在存储器401 内的数据,执行服务器100的各种功能和处理数据。可选地,处理器402 可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(ProgrammableLogic Array,PLA)中的至少一种硬件形式来实现。处理器 402可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器 (Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器402中,单独通过一块通信芯片进行实现。
存储器401可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器401可用于存储指令、程序、代码、代码集或指令集。存储器401可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现前述各个实施例的指令等。存储数据区还可以存储服务器100在使用中所创建的数据(比如电话本、音视频数据、聊天记录数据)等。
请参考图8,其示出了本申请又一实施例提供的一种计算机可读存储介质的结构框图。该计算机可读存储介质500中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。
计算机可读存储介质500可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读存储介质500包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质500具有执行上述方法中的任何方法步骤的程序代码510的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码510可以例如以适当形式进行压缩。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (13)
1.一种数据采集的方法,其特征在于,所述方法包括:
获取第一阈值数量的线程,将待采集的网站地址放入任务队列;
从代理池中获取第二阈值数量的代理服务器,将所述第二阈值数量的代理服务器添加至代理队列,所述代理队列中的代理服务器的评分高于阈值分数,所述代理服务器的评分用于评估所述代理服务器的质量;
从所述代理队列中取出一个代理服务器作为目标代理服务器;调用目标线程执行通过所述目标代理服务器访问目标网站地址对应的页面,所述目标线程是所述第一阈值数量的线程中的任一线程,所述目标网站是从所述任务队列中取出的一个网站地址;
基于所述目标代理服务器对所述目标网站地址对应的页面进行访问得到的访问结果未达到预期的访问结果时,降低所述目标代理服务器的评分;
删除所述代理池中评分低于阈值分数的代理服务器;
当所述代理池中的代理服务器的数量低于设定阈值时,从网络中获取代理服务器并存入所述代理池。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
判断所述页面访问是否成功;
若所述页面访问成功,将所述代理服务器放回所述代理队列;
所述基于所述目标代理服务器对所述目标网站地址对应的页面进行访问得到的访问结果未达到预期的访问结果时,降低所述目标代理服务器的评分,包括:
若所述页面访问未成功,降低所述目标代理服务器的评分;将所述目标代理服务器放回所述代理队列,将所述目标网站地址放回所述任务队列。
3.如权利要求2所述的方法,其特征在于,所述方法还包括:
若所述页面访问成功,校验采集到的所述页面对应的数据是否存在异常;
若所述页面对应的数据不存在异常,将所述页面对应的数据进行存储;
所述基于所述目标代理服务器对所述目标网站地址对应的页面进行访问得到的访问结果未达到预期的访问结果时,降低所述目标代理服务器的评分,还包括:
若所述页面对应的数据存在异常,则降低所述目标代理服务器的评分,将所述目标网站地址放回所述任务队列。
4.如权利要求2所述的方法,其特征在于,所述方法还包括:
若所述页面访问成功,判断所述任务队列是否为空;
若为空,则结束任务;否则执行从所述代理队列中取出一个代理服务器作为目标代理服务器,调用目标线程执行通过所述目标代理服务器访问目标网站地址对应的页面。
5.如权利要求1所述的方法,其特征在于,所述从所述代理队列中取出目标代理服务器的步骤之后还包括:
判断所述目标网站地址对应的页面的访问失败的次数是否大于第二预设阈值;
若大于,将所述页面进行记录;
若不大于,则执行从所述代理队列中取出一个代理服务器作为目标代理服务器,调用目标线程执行通过所述目标代理服务器访问目标网站地址对应的页面。
6.如权利要求1所述的方法,其特征在于,所述从所述代理队列中取出一个代理服务器作为目标代理服务器,调用目标线程执行通过所述目标代理服务器访问目标网站地址对应的页面的步骤之前还包括:
判断所述代理队列中的代理服务器的数量是否小于第一预设阈值;
若小于,则向所述代理池请求获取不低于第一预设阈值数量的代理服务器,将所述不低于第一预设阈值数量的代理服务器排序后添加至所述代理队列,所述代理池中存储有成功采集数据的代理服务器。
7.如权利要求6所述的方法,其特征在于,所述当所述代理池中的代理服务的数量低于设定阈值时,从网络中获取代理服务器并存入所述代理池,包括:
当所述代理池中的代理服务的数量低于设定阈值时,从网络中获取代理服务器,对从网络中获取的代理服务器进行校验;
若校验成功,将所述从网络中获取的代理服务器存储到所述代理池。
8.如权利要求7所述的方法,其特征在于,所述对所述从网络中获取的代理服务器进行校验的步骤包括:
通过所述从网络中获取的代理服务器访问指定网站;
判断所述访问是否成功;
若成功,判定校验成功。
9.一种数据采集的装置,其特征在于,所述装置包括数据采集模块,所述数据采集模块包括:
第一获取模块,用于获取第一阈值数量的线程,将待采集的网站地址放入任务队列;
第二获取模块,用于从代理池中获取第二阈值数量的代理服务器,将所述第二阈值数量的代理服务器添加至代理队列,所述代理队列中的代理服务器的评分高于阈值分数,所述代理服务器的评分用于评估所述代理服务器的质量;
取出模块,用于从所述代理队列中取出一个代理服务器作为目标代理服务器;
访问模块,用于调用目标线程执行通过所述目标代理服务器访问目标网站地址对应的页面,所述目标线程是所述第一阈值数量的线程中的任一线程,所述目标网站是从所述任务队列中取出的一个网站地址;
代理管理模块,用于基于所述目标代理服务器对所述目标网站地址对应的页面进行访问得到的访问结果未达到预期的访问结果时,降低所述目标代理服务器的评分;删除所述代理池中评分低于阈值分数的代理服务器;以及当所述代理池中的代理服务器的数量低于设定阈值时,从网络中获取代理服务器。
10.如权利要求9 所述的装置,其特征在于,所述数据采集模块还包括:
判断模块,用于判断所述代理队列中的代理服务器的数量是否小于第一预设阈值;
第三获取模块,用于若小于,则向所述代理池请求获取不低于第一预设阈值数量的代理服务器,将所述不低于第一预设阈值数量的代理服务器排序后添加至所述代理队列,所述代理池中存储有成功采集数据的代理服务器。
11.如权利要求10 所述的装置,其特征在于,所述装置还包括代理管理模块,所述代理管理模块还包括:
校验单元,用于对从网络中获取的代理服务器进行校验;
存储单元,用于若校验成功,将所述从网络中获取的代理服务器存储到所述代理池。
12.一种服务器,其特征在于,包括存储器,一个或多个处理器;
一个或多个程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行权利要求1-8任一所述的方法。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有程序代码,其中,在所述程序代码由处理器运行时执行权利要求1-8任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910195036.2A CN110062025B (zh) | 2019-03-14 | 2019-03-14 | 数据采集的方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910195036.2A CN110062025B (zh) | 2019-03-14 | 2019-03-14 | 数据采集的方法、装置、服务器及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110062025A CN110062025A (zh) | 2019-07-26 |
CN110062025B true CN110062025B (zh) | 2022-09-09 |
Family
ID=67316115
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910195036.2A Active CN110062025B (zh) | 2019-03-14 | 2019-03-14 | 数据采集的方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110062025B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8560604B2 (en) | 2009-10-08 | 2013-10-15 | Hola Networks Ltd. | System and method for providing faster and more efficient data communication |
US9241044B2 (en) | 2013-08-28 | 2016-01-19 | Hola Networks, Ltd. | System and method for improving internet communication by using intermediate nodes |
US11057446B2 (en) | 2015-05-14 | 2021-07-06 | Bright Data Ltd. | System and method for streaming content from multiple servers |
LT3805958T (lt) | 2017-08-28 | 2024-03-12 | Bright Data Ltd. | Būdas pagerinti turinio parsisiuntimą, pasirenkant tunelinius įrenginius |
EP4177771A1 (en) | 2019-02-25 | 2023-05-10 | Bright Data Ltd. | System and method for url fetching retry mechanism |
EP4030318A1 (en) | 2019-04-02 | 2022-07-20 | Bright Data Ltd. | System and method for managing non-direct url fetching service |
CN110569123B (zh) * | 2019-07-31 | 2022-08-02 | 苏宁云计算有限公司 | 线程分配方法、装置、计算机设备和存储介质 |
CN112583780B (zh) * | 2019-09-30 | 2023-04-07 | 北京国双科技有限公司 | 使用代理ip访问网站数据的方法、装置、系统和设备 |
US10637956B1 (en) | 2019-10-01 | 2020-04-28 | Metacluster It, Uab | Smart proxy rotator |
CN110806931B (zh) * | 2019-10-31 | 2022-11-22 | 上海依图网络科技有限公司 | 分布式服务的调用链路跟踪实现方法、装置及电子设备 |
CN111277662B (zh) * | 2020-01-22 | 2022-11-08 | 咪咕文化科技有限公司 | 代理服务器的处理方法、电子设备及存储介质 |
CN111343253A (zh) * | 2020-02-14 | 2020-06-26 | 苏宁金融科技(南京)有限公司 | 一种信息提取方法及系统 |
CN111522654A (zh) * | 2020-03-18 | 2020-08-11 | 大箴(杭州)科技有限公司 | 分布式爬虫的调度处理方法、装置及设备 |
CN112822306B (zh) * | 2021-02-03 | 2022-07-29 | 深圳前海微众银行股份有限公司 | 代理ip动态管理方法、设备及计算机可读存储介质 |
CN113055498B (zh) * | 2021-05-26 | 2021-10-01 | 天聚地合(苏州)数据股份有限公司 | 数据源访问方法、装置、存储介质及设备 |
CN113422777B (zh) * | 2021-06-28 | 2022-08-19 | 安天科技集团股份有限公司 | 基于白名单的渗透测试方法、装置、计算设备及存储介质 |
CN113596114B (zh) * | 2021-07-12 | 2022-11-18 | 杭州电子科技大学 | 一种可扩展的自动化Web漏洞扫描系统及方法 |
CN114417216B (zh) * | 2022-01-04 | 2022-11-29 | 马上消费金融股份有限公司 | 数据采集方法、装置、电子设备及可读存储介质 |
CN114528179B (zh) * | 2022-01-21 | 2022-11-04 | 北京麦克斯泰科技有限公司 | 数据采集程序状态监控方法、装置、设备及存储介质 |
CN117714537B (zh) * | 2024-02-06 | 2024-04-16 | 湖南四方天箭信息科技有限公司 | 一种访问方法、装置、终端和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103902386A (zh) * | 2014-04-11 | 2014-07-02 | 复旦大学 | 一种基于连接代理优化管理的多线程网络爬虫处理方法 |
CN104092660A (zh) * | 2014-06-09 | 2014-10-08 | 武汉传神信息技术有限公司 | 一种访问网络站点的方法 |
CN107092632A (zh) * | 2017-02-09 | 2017-08-25 | 北京小度信息科技有限公司 | 数据处理方法及装置 |
CN108345642A (zh) * | 2018-01-12 | 2018-07-31 | 深圳壹账通智能科技有限公司 | 采用代理ip爬取网站数据的方法、存储介质和服务器 |
CN108632106A (zh) * | 2017-03-22 | 2018-10-09 | 广达电脑股份有限公司 | 监控服务设备的系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8533716B2 (en) * | 2004-03-31 | 2013-09-10 | Synopsys, Inc. | Resource management in a multicore architecture |
CN106534244B (zh) * | 2015-09-14 | 2020-01-17 | 中国移动通信集团公司 | 一种代理资源的调度方法及装置 |
CN105740384A (zh) * | 2016-01-27 | 2016-07-06 | 浪潮软件集团有限公司 | 一种爬虫代理自动切换方法及装置 |
CN107832355B (zh) * | 2017-10-23 | 2019-03-26 | 北京金堤科技有限公司 | 一种爬虫程序的代理获取的方法及装置 |
CN109033195A (zh) * | 2018-06-28 | 2018-12-18 | 上海盛付通电子支付服务有限公司 | 网页信息的获取方法、获取设备及计算机可读介质 |
-
2019
- 2019-03-14 CN CN201910195036.2A patent/CN110062025B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103902386A (zh) * | 2014-04-11 | 2014-07-02 | 复旦大学 | 一种基于连接代理优化管理的多线程网络爬虫处理方法 |
CN104092660A (zh) * | 2014-06-09 | 2014-10-08 | 武汉传神信息技术有限公司 | 一种访问网络站点的方法 |
CN107092632A (zh) * | 2017-02-09 | 2017-08-25 | 北京小度信息科技有限公司 | 数据处理方法及装置 |
CN108632106A (zh) * | 2017-03-22 | 2018-10-09 | 广达电脑股份有限公司 | 监控服务设备的系统 |
CN108345642A (zh) * | 2018-01-12 | 2018-07-31 | 深圳壹账通智能科技有限公司 | 采用代理ip爬取网站数据的方法、存储介质和服务器 |
Also Published As
Publication number | Publication date |
---|---|
CN110062025A (zh) | 2019-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110062025B (zh) | 数据采集的方法、装置、服务器及存储介质 | |
CN110275958B (zh) | 网站信息识别方法、装置和电子设备 | |
EP3030966B1 (en) | Virtual computing instance migration | |
CN110020062B (zh) | 一种可定制的网络爬虫方法及系统 | |
CN114095567B (zh) | 数据访问请求的处理方法、装置、计算机设备及介质 | |
CN107276842B (zh) | 接口测试方法、装置及电子设备 | |
CN113254320A (zh) | 记录用户网页操作行为的方法及装置 | |
CN108200132A (zh) | 资源获取方法、装置、设备及计算机可读存储介质 | |
CN110555019A (zh) | 一种基于业务端的数据清洗方法 | |
CN111817984A (zh) | 消息发送方法、装置、设备及存储介质 | |
CN113469866A (zh) | 数据处理方法、装置和服务器 | |
CN113835874A (zh) | 深度学习业务调度方法、系统、终端及存储介质 | |
CN111770119A (zh) | 网站资源获取方法、系统、装置及计算机存储介质 | |
CN109246234B (zh) | 一种镜像文件下载方法、装置、电子设备及存储介质 | |
CN114465741B (zh) | 一种异常检测方法、装置、计算机设备及存储介质 | |
CN110569178B (zh) | 基于大数据平台的接口预警方法和系统 | |
CN113704204A (zh) | 数据文件处理方法、装置、电子设备及存储介质 | |
CN110569238B (zh) | 一种基于大数据的数据治理方法、系统、存储介质和服务端 | |
CN116132448B (zh) | 基于人工智能的数据分流方法及相关设备 | |
CN108062224B (zh) | 基于文件句柄的数据读写方法、装置及计算设备 | |
CN110674008A (zh) | Ssd的问题盘日志信息收集方法、装置、设备及介质 | |
CN114371969A (zh) | 一种页面性能测试方法、装置、电子设备及存储介质 | |
CN110061864B (zh) | 一种域名配置自动化验证的方法和系统 | |
CN108846141B (zh) | 一种离线缓存加载方法及装置 | |
CN113626483A (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 |