本發明涉及互聯網技術領域,特別是涉及一種管理爬蟲代理的方法及裝置。
背景技術:
隨著網絡的迅速發展,萬維網成為大量信息的載體,為了有效地提取并利用這些信息,網絡爬蟲應用而生。網絡爬蟲(又被稱為網頁蜘蛛,網絡機器人,更經常的稱為網頁追逐者),是一種按照一定的規則,自動地抓取萬維網信息的程序或者腳本。
然而,許多網站為了防止網絡爬蟲所帶來的系統壓力,采取了反爬蟲技術,不允許爬蟲進行高頻率的數據采集。目前,為了應對反爬蟲技術,進程可以向代理發起請求,由代理實現網頁下載,如此,網站則不能檢測到真正采集網頁的機器,其中,代理是指可以用于實現網頁下載的服務器。
現有技術中,為了實現使用代理更高效地采集所需要的信息,往往都是建立代理池,進程通過從代理池中不斷獲取代理,并且向獲取的代理發起請求,來實現網頁下載,采集所需要的信息。
但是,現有技術并沒有對代理池中的代理進行有效管理,在代理池中的代理改變時,不能及時反饋給進程,例如:在代理池中有新增加的代理時,現有技術不能及時將新增加的代理反饋給進程,進程獲取不到新增加的代理;在代理池中有不可用的代理時,進程獲取到該不可用的代理后,不能進行網頁下載。這樣就會影響進程采集信息。
技術實現要素:
本發明實施例的目的在于提供一種管理爬蟲代理的方法及裝置,以實現及時更新代理,消除代理的改變對進程采集信息的影響。具體技術方案如下:
第一方面,本發明實施例提供了一種管理爬蟲代理的方法,該方法包括:
獲取并根據攜帶有待更新代理的指令,得到待更新代理的代理信息,其中,待更新代理的代理信息至少包括:待更新代理的ip地址、待更新代理的名稱及待更新代理的端口,待更新代理的指令為待新增代理的指令和/或待刪除代理的指令;
更新待更新代理的代理信息,并更新待更新代理到代理池。
可選的,所述獲取并根據攜帶有待更新代理的指令,得到待更新代理的代理信息,包括:
獲取并根據攜帶有待更新代理的指令,在待更新代理的指令為待新增代理的指令時,得到待新增代理的代理信息,其中,待新增代理的代理信息至少包括:待新增代理的ip地址、待新增代理的名稱及待新增代理的端口;
相應的,所述更新待更新代理的代理信息,并更新待更新代理到代理池,包括:
添加待新增代理的代理信息,并添加待新增代理到代理池。
可選的,在所述獲取并根據攜帶有待更新代理的指令,在待更新代理的指令為待新增代理的指令時,得到待新增代理的代理信息之后,本發明實施例的管理爬蟲代理的方法還包括:
根據待新增代理的代理信息,向待新增代理發送下載第一指定內容的第一下載指令;
在待新增代理根據第一下載指令成功下載第一指定內容時,則待新增代理為可用代理;
相應的,所述添加待新增代理的代理信息,并添加待新增代理到代理池,包括:
在待新增代理為可用代理時,添加可用代理的代理信息,并添加可用代理到代理池。
可選的,所述獲取并根據攜帶有待更新代理的指令,得到待更新代理的代理信息,包括:
獲取并根據攜帶有待更新代理的指令,在待更新代理的指令為待刪除代理的指令時,得到待刪除代理的代理信息,其中,待刪除代理的代理信息至少包括:待刪除代理的ip地址、待刪除代理的名稱及待刪除代理的端口;
相應的,所述更新待更新代理的代理信息,并更新待更新代理到代理池,包括:
刪除待刪除代理的代理信息,并刪除代理池中的待刪除代理。
可選的,在所述獲取并根據攜帶有待更新代理的指令,在待更新代理的指令為待刪除代理的指令時,得到待刪除代理的代理信息之前,本發明實施例的管理爬蟲代理的方法還包括:
周期性的獲取代理池中第一代理的代理信息,并根據第一代理的代理信息,向第一代理發送下載第二指定內容的第二下載指令,其中,第一代理為代理池中的任一個代理;
在第一代理根據第二下載指令不能下載第二指定內容時,則該第一代理為待刪除代理。
另一方面,本發明實施例還提供了一種管理爬蟲代理的裝置,該裝置包括:
獲取模塊,用于獲取并根據攜帶有待更新代理的指令,得到待更新代理的代理信息,其中,待更新代理的代理信息至少包括:待更新代理的ip地址、待更新代理的名稱及待更新代理的端口,待更新代理的指令為待新增代理的指令和/或待刪除代理的指令;
更新模塊,用于更新待更新代理的代理信息,并更新待更新代理到代理池。
可選的,所述獲取模塊,具體用于:
獲取并根據攜帶有待更新代理的指令,在待更新代理的指令為待新增代理的指令時,得到待新增代理的代理信息,其中,待新增代理的代理信息至少包括:待新增代理的ip地址、待新增代理的名稱及待新增代理的端口;
相應的,所述更新模塊,具體用于:
添加待新增代理的代理信息,并添加待新增代理到代理池。
可選的,在所述獲取并根據攜帶有待更新代理的指令,在待更新代理的指令為待新增代理的指令時,得到待新增代理的代理信息之后,本發明實施例的管理爬蟲代理的裝置還包括:
健康檢查模塊,用于根據待新增代理的代理信息,向待新增代理發送下載第一指定內容的第一下載指令;
在待新增代理根據第一下載指令成功下載第一指定內容時,則待新增代理為可用代理;
相應的,所述更新模塊,還具體用于:
在待新增代理為可用代理時,添加可用代理的代理信息,并添加可用代理到代理池。
可選的,所述獲取模塊,還具體用于:
獲取并根據攜帶有待更新代理的指令,在待更新代理的指令為待刪除代理的指令時,得到待刪除代理的代理信息,其中,待刪除代理的代理信息至少包括:待刪除代理的ip地址、待刪除代理的名稱及待刪除代理的端口;
相應的,所述更新模塊,還具體用于:
刪除待刪除代理的代理信息,并刪除代理池中的待刪除代理。
可選的,在所述獲取并根據攜帶有待更新代理的指令,在待更新代理的指令為待刪除代理的指令時,得到待刪除代理的代理信息之前,本發明實施例的管理爬蟲代理的裝置還包括:
待刪除代理檢查模塊,用于周期性的獲取代理池中第一代理的代理信息,并根據第一代理的代理信息,向第一代理發送下載第二指定內容的第二下載指令,其中,第一代理為代理池中的任一個代理;
在第一代理根據第二下載指令不能下載第二指定內容時,則該第一代理為待刪除代理。
本發明實施例提供的一種管理爬蟲代理的方法及裝置,通過在有待更新代理時,及時更新待更新代理的代理信息,并更新待更新代理到代理池,保證代理池中的代理都是可用代理,消除代理的改變對進程采集信息的影響。當然,實施本發明的任一產品或方法并不一定需要同時達到以上所述的所有優點。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為本發明實施例的一種管理爬蟲代理的方法的第一種實施方式的流程圖;
圖2為本發明實施例的一種管理爬蟲代理的方法的第二種實施方式的流程圖;
圖3為本發明實施例的一種管理爬蟲代理的方法的第三種實施方式的流程圖;
圖4為本發明實施例的一種管理爬蟲代理的方法的第四種實施方式的流程圖;
圖5為本發明實施例的一種管理爬蟲代理的方法的第五種實施方式的流程圖;
圖6為本發明實施例的一種管理爬蟲代理的裝置的結構圖;
圖7為本發明實施例的一種管理爬蟲代理的裝置的應用系統圖。
具體實施方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
為了解決現有技術存在的問題,本發明實施例提供了一種管理爬蟲代理的方法及裝置,以實現及時更新代理,消除代理的改變對進程采集信息的影響。
下面,首先對本發明實施例提供的一種管理爬蟲代理的方法進行介紹,如圖1所示,為本發明實施例的一種管理爬蟲代理的方法的第一種實施方式的流程圖,所述的方法可以包括:
s101,獲取并根據攜帶有待更新代理的指令,得到待更新代理的代理信息,其中,待更新代理的代理信息至少包括:待更新代理的ip地址、待更新代理的名稱及待更新代理的端口,待更新代理的指令為待新增代理的指令和/或待刪除代理的指令;
代理是指可以用于實現網頁下載的服務器,
具體地,該待更新代理包括自建代理和商業購買的代理,對于自建代理,該攜帶有待更新代理的指令來自于自建代理集群,對于商業購買的代理,該攜帶有待更新代理的指令來自于商業購買的代理集群,其中,自建代理的方法為現有技術,此處不再贅述。
自建代理在建立成功以后,都是可用的,生命周期較長,而商業購買的代理,在購買后,并不能保證所有購買的代理都是可用的,并且購買的代理的生命周期也不同,因此,在這里將自建代理與商業購買的代理進行分開運維,能夠減少運維的復雜度。
s102,更新待更新代理的代理信息,并更新待更新代理到代理池。
具體地,在步驟s101中得到待更新代理的代理信息后,首先更新本發明實施例的待更新代理的代理信息,然后發送更新指令到代理池,更新代理池中的該待更新代理。
需要說明的是,代理池為保存有各個代理的代理信息的表項或集合。
本發明實施例提供的一種管理爬蟲代理的方法,通過在有待更新代理時,及時更新待更新代理的代理信息,并更新待更新代理到代理池,保證代理池中的代理都是可用代理,消除代理的改變對進程采集信息的影響。
具體地,本發明實施例的一種管理爬蟲代理的方法,可以應用于代理注冊中心,該代理注冊中心用于維護和管理代理池,具體地,該代理注冊中心可以使用zookeeper集群構建。為了更好的說明本發明實施例,下面將以代理注冊中心為例進行說明。
在第一種實施方式中,待更新代理的指令為待新增代理的指令和/或待刪除代理的指令,那么,在待更新代理的指令為待新增代理的指令時,可以通過圖2所示的實施方式進行管理,如圖2所示,為本發明實施例的一種管理爬蟲代理的方法的第二種實施方式的流程圖;該方法可以包括:
s201,獲取并根據攜帶有待更新代理的指令,在待更新代理的指令為待新增代理的指令時,得到待新增代理的代理信息,其中,待新增代理的代理信息至少包括:待新增代理的ip地址、待新增代理的名稱及待新增代理的端口;
在該待新增代理為自建代理時,自建代理集群發送攜帶有該自建代理信息的更新指令,具體地,該待新增代理的指令中包含有該待新增代理的代理信息,因此,代理注冊中心可以獲取到該待新增代理的代理信息。
s202,添加待新增代理的代理信息,并添加待新增代理到代理池。
在代理注冊中心獲取到該待新增代理的代理信息后,將該待新增代理的代理信息注冊到代理注冊中心,具體地,注冊到代理注冊中心的方法為:將該待新增代理的代理信息添加到代理注冊中心相應的路徑下。在注冊成功后,發送攜帶有該待新增代理的代理信息的更新指令給代理改變觸發進程,該進程用于發送攜帶有該待新增代理的代理信息的添加指令給代理池,將該待新增代理的代理信息也添加到代理池中。
通過本發明實施例提供的一種管理爬蟲代理的方法,能夠及時得到待新增的代理,并將該待新增代理添加到代理池,能夠使得進程在使用代理池中的代理采集信息時,能夠及時得到最新的代理,從而消除代理的改變對進程采集信息的影響。
由于自建代理在注冊時都是可以使用的,因此,在該待新增代理為自建代理時,可以使用上述實施方式。為了保證添加到代理池中的代理都是可用的,消除代理的改變對進程采集信息的影響,下面,介紹本發明實施例提供的一種管理爬蟲代理的方法的第三種實施方式,如圖3所示,為本發明實施例的一種管理爬蟲代理的方法的第三種實施方式的流程圖,該方法可以包括:
s301,獲取并根據攜帶有待更新代理的指令,在待更新代理的指令為待新增代理的指令時,得到待新增代理的代理信息,其中,待新增代理的代理信息至少包括:待新增代理的ip地址、待新增代理的名稱及待新增代理的端口;
s302,根據待新增代理的代理信息,向待新增代理發送下載第一指定內容的第一下載指令;
s303,在待新增代理根據第一下載指令成功下載第一指定內容時,則待新增代理為可用代理;
s304,在待新增代理為可用代理時,添加可用代理的代理信息,并添加可用代理到代理池。
需要說明的是,該第一指定內容為在檢查該待新增代理是否為可用代理時,選擇的內容,可以包括:網頁、信息、視頻等內容。
通過本發明實施例,能夠保證添加到代理池中的商用代理都是可以使用的代理,進一步消除代理的改變對進程采集信息的影響。
在第一種實施方式中,待更新代理的指令為待新增代理的指令和/或待刪除代理的指令,那么,在待更新代理的指令為待刪除代理的指令時,可以通過圖4所示的實施方式進行管理,如圖4所示,為本發明實施例的一種管理爬蟲代理的方法的第四種實施方式的流程圖;該方法可以包括:
s401,獲取并根據攜帶有待更新代理的指令,在待更新代理的指令為待刪除代理的指令時,得到待刪除代理的代理信息,其中,待刪除代理的代理信息至少包括:待刪除代理的ip地址、待刪除代理的名稱及待刪除代理的端口;
s402,刪除待刪除代理的代理信息,并刪除代理池中的待刪除代理。
需要說明的是,該待刪除代理的指令可以來自于自建代理集群、商業購買的代理集群或者代理池。
具體地,這里以代理注冊中心為例進行說明,在代理注冊中心獲取到該待刪除代理的代理信息后,將該待刪除代理的代理信息從代理注冊中心刪除,具體地,刪除的方法為:從代理注冊中心的相應路徑下刪除該待刪除代理。在代理注冊中心刪除后,發送攜帶有該待刪除代理的代理信息的更新指令給代理改變觸發進程,該進程用于發送攜帶有該待刪除代理的代理信息的添加指令給代理池,將該待刪除代理的代理信息從代理池中刪除。
通過本發明實施例提供的一種管理爬蟲代理的方法,能夠及時得到待刪除的代理,并將該待刪除代理從代理池中刪除,能夠使得進程在使用代理池中的代理采集信息時,不使用該待刪除的代理,從而消除代理的改變對進程采集信息的影響。
具體地,在所述獲取并根據攜帶有待更新代理的指令,在待更新代理的指令為待刪除代理的指令時,得到待刪除代理的代理信息之前,本發明實施例的管理爬蟲代理的方法還包括:
周期性的獲取代理池中第一代理的代理信息,并根據第一代理的代理信息,向第一代理發送下載第二指定內容的第二下載指令,其中,第一代理為代理池中的任一個代理;
在第一代理根據第二下載指令不能下載第二指定內容時,則該第一代理為待刪除代理。
需要說明的是,該第二指定內容為在檢查第一代理是否為待刪除代理時選擇的內容,可以包括:網頁、信息、視頻等內容。為了降低實施本發明實施例的難度,該第二指定內容可以與第一指定內容相同。
應當理解的是,獲取代理池中第一代理的代理信息的周期是根據實際需要進行設置的。
通過本發明實施例,能夠及時刪除代理池中的不可用代理,保證代理池中的代理都是可以使用的代理,進一步消除代理的改變對進程采集信息的影響。
需要說明的是,在該待更新代理的指令為待新增代理的指令和待刪除代理的指令時,可以同時通過上述的實施方式來實現,可以相互參考,這里不再贅述。
另外,本發明實施例還提供了一種管理爬蟲代理的方法,如圖5所示,為本發明實施例的一種管理爬蟲代理的方法的第五種實施方式的流程圖,該方法可以包括:
s501,獲取并根據攜帶有待新增代理的指令,得到待新增代理的代理信息,其中,待新增代理的代理信息至少包括:待新增代理的ip地址、待新增代理的名稱及待新增代理的端口;
s502,添加待新增代理的代理信息,并添加待新增代理到代理池;
s503,周期性的獲取代理池中第一代理的代理信息,并根據第一代理的代理信息,向第一代理發送下載第二指定內容的第二下載指令,其中,第一代理為代理池中的任一個代理;
s504,在第一代理根據第二下載指令不能下載第二指定內容時,則該第一代理為待刪除代理;
s505,獲取并根據攜帶有待刪除代理的指令,得到待刪除代理的代理信息,其中,待刪除代理的代理信息至少包括:待刪除代理的ip地址、待刪除代理的名稱及待刪除代理的端口;
s506,刪除待刪除代理的代理信息,并刪除代理池中的待刪除代理。
相應于上述方法實施例,本發明實施例提供了一種管理爬蟲代理的裝置,如圖6所示,為本發明實施例的一種管理爬蟲代理的裝置的結構圖,該裝置可以包括:
獲取模塊601,用于獲取并根據攜帶有待更新代理的指令,得到待更新代理的代理信息,其中,待更新代理的代理信息至少包括:待更新代理的ip地址、待更新代理的名稱及待更新代理的端口,待更新代理的指令為待新增代理的指令和/或待刪除代理的指令;
更新模塊602,用于更新待更新代理的代理信息,并更新待更新代理到代理池。
本發明實施例提供的一種管理爬蟲代理的裝置,通過在有待更新代理時,及時更新待更新代理的代理信息,并更新待更新代理到代理池,保證代理池中的代理都是可用代理,消除代理的改變對進程采集信息的影響。
具體地,所述獲取模塊601,具體用于:
獲取并根據攜帶有待更新代理的指令,在待更新代理的指令為待新增代理的指令時,得到待新增代理的代理信息,其中,待新增代理的代理信息至少包括:待新增代理的ip地址、待新增代理的名稱及待新增代理的端口;
相應的,所述更新模塊602,具體用于:
添加待新增代理的代理信息,并添加待新增代理到代理池。
具體地,在所述獲取并根據攜帶有待更新代理的指令,在待更新代理的指令為待新增代理的指令時,得到待新增代理的代理信息之后,本發明實施例的管理爬蟲代理的裝置還包括:
健康檢查模塊,用于根據待新增代理的代理信息,向待新增代理發送下載第一指定內容的第一下載指令;
在待新增代理根據第一下載指令成功下載第一指定內容時,則待新增代理為可用代理;
相應的,所述更新模塊602,還具體用于:
在待新增代理為可用代理時,添加可用代理的代理信息,并添加可用代理到代理池。
具體地,所述獲取模塊601,還具體用于:
獲取并根據攜帶有待更新代理的指令,在待更新代理的指令為待刪除代理的指令時,得到待刪除代理的代理信息,其中,待刪除代理的代理信息至少包括:待刪除代理的ip地址、待刪除代理的名稱及待刪除代理的端口;
相應的,所述更新模塊602,還具體用于:
刪除待刪除代理的代理信息,并刪除代理池中的待刪除代理。
具體地,在所述獲取并根據攜帶有待更新代理的指令,在待更新代理的指令為待刪除代理的指令時,得到待刪除代理的代理信息之前,本發明實施例的管理爬蟲代理的裝置還包括:
待刪除代理檢查模塊,用于周期性的獲取代理池中第一代理的代理信息,并根據第一代理的代理信息,向第一代理發送下載第二指定內容的第二下載指令,其中,第一代理為代理池中的任一個代理;
在第一代理根據第二下載指令不能下載第二指定內容時,則該第一代理為待刪除代理。
如圖7所示,為本發明實施例的一種管理爬蟲代理的裝置的應用系統圖,該系統可以包括:
代理模塊701、代理注冊中心702、健康檢查模塊703、待刪除代理檢查模塊704、代理改變觸發模塊705、代理更新模塊706,代理池707,其中代理注冊中心702包括:獲取模塊601和更新模塊602。
代理注冊中心702用于獲取代理模塊701中的自建代理,或者獲取代理模塊701中商業購買的代理,或者獲取代理池707中的待刪除代理;在代理注冊中心702獲取代理模塊701中商業購買的代理時,為了保證添加到代理池707中的新增代理都是可用代理,通過健康檢查模塊703對商業購買的代理進行檢查,只有在商業購買的代理是可用代理時,才將該商業購買的代理添加到代理池707中。
具體的添加方式為:代理注冊中心702中的更新模塊602根據獲取模塊601獲取的待添加代理的代理信息,添加該待添加代理的代理信息到代理注冊中心702中,并發送該待添加代理的代理信息到代理改變觸發模塊705,代理改變觸發模塊705產生并發送攜帶有該待添加代理的代理信息的添加指令到代理更新模塊706,代理更新模塊706根據該添加指令將該待添加代理的代理信息添加到代理池707中。
在將代理模塊701中的代理添加到代理池707中后,待刪除代理檢查模塊704會周期性的檢查代理池707中是否有待刪除代理,在代理池707中有待刪除代理時,代理注冊中心702中的更新模塊602刪除代理注冊中心702中的該待刪除代理的代理信息,并發送該待刪除代理的代理信息給代理改變觸發模塊705,代理改變觸發模塊705產生并發送攜帶有該待刪除代理的代理信息的刪除指令給代理更新模塊706,代理更新模塊706根據該刪除指令將該待刪除代理的代理信息從代理池707中刪除。
需要說明的是,本發明實施例的裝置是應用上述管理爬蟲代理的方法的裝置,則上述管理爬蟲代理的方法的所有實施例均適用于該裝置,且均能達到相同或相似的有益效果。
通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到上述實施例方法可借助軟件加必需的通用硬件平臺的方式來實現,當然也可以通過硬件,但很多情況下前者是更佳的實施方式。基于這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在一個存儲介質(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺服務端設備(可以是計算機、服務器或者網絡設備等)執行本發明各個實施例所述的方法。
需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
本說明書中的各個實施例均采用相關的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于系統實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
以上所述僅為本發明的較佳實施例而已,并非用于限定本發明的保護范圍。凡在本發明的精神和原則之內所作的任何修改、等同替換、改進等,均包含在本發明的保護范圍內。