本發(fā)明屬于網絡爬蟲的技術領域,具體地涉及一種基于selenium的爬蟲抓取方法及系統(tǒng)。
背景技術:
網絡爬蟲(又被稱為網頁蜘蛛,網絡機器人,在FOAF社區(qū)中間,更經常的稱為網頁追逐者),是一種按照一定的規(guī)則,自動地抓取萬維網信息的程序或者腳本。
一般的爬蟲都是直接使用http/https協(xié)議,下載指定url的html內容,并對內容進行爬蟲抓取分析。例如在java中使用urlconnection,httpclient等。
但是現(xiàn)在很多頁面是通過js以及ajax動態(tài)加載的,這就使得抓取數(shù)據(jù)變得異常艱難。
技術實現(xiàn)要素:
本發(fā)明的技術解決問題是:克服現(xiàn)有技術的不足,提供一種基于selenium的爬蟲抓取方法,其能夠解決數(shù)據(jù)抓取中遇到難破解的網頁/網站,并且抓取效率有所提高,開發(fā)者無需關注破解js如何加密,是否丟請求、丟參數(shù),大大減少開發(fā)人員的工作時間和出錯概率。
本發(fā)明的技術解決方案是:這種基于selenium的爬蟲抓取方法,該方法包括以下步驟:
(1)執(zhí)行初始url;
(2)通過selenium驅動系統(tǒng)瀏覽器執(zhí)行url地址;
(3)當頁面加載完畢后,獲取頁面進行頁面數(shù)據(jù)解析。
本發(fā)明通過執(zhí)行初始URL,因為selenium提供一組API可以與真實的瀏覽器內核交互,通過selenium驅動系統(tǒng)瀏覽器執(zhí)行url地址,當頁面加載完畢后,獲取頁面進行頁面數(shù)據(jù)解析,因此能夠解決數(shù)據(jù)抓取中遇到難破解的網頁/網站,并且抓取效率有所提高,開發(fā)者無需關注破解js如何加密,是否丟請求、丟參數(shù),大大減少開發(fā)人員的工作時間和出錯概率。
還提供了一種基于selenium的爬蟲抓取系統(tǒng),該系統(tǒng)包括:
初始url執(zhí)行模塊,其配置來執(zhí)行初始url;
url地址執(zhí)行模塊,其配置來通過selenium驅動系統(tǒng)瀏覽器執(zhí)行url地址;
解析模塊,其配置來當頁面加載完畢后,獲取頁面進行頁面數(shù)據(jù)解析。
附圖說明
圖1是根據(jù)本發(fā)明的基于selenium的爬蟲抓取方法的流程圖。
具體實施方式
如圖1所示,這種基于selenium的爬蟲抓取方法,該方法包括以下步驟:
(1)執(zhí)行初始url;
(2)通過selenium驅動系統(tǒng)瀏覽器執(zhí)行url地址;
(3)當頁面加載完畢后,獲取頁面進行頁面數(shù)據(jù)解析。
本發(fā)明通過執(zhí)行初始URL,因為selenium提供一組API可以與真實的瀏覽器內核交互,通過selenium驅動系統(tǒng)瀏覽器執(zhí)行url地址,當頁面加載完畢后,獲取頁面進行頁面數(shù)據(jù)解析,因此能夠解決數(shù)據(jù)抓取中遇到難破解的網頁/網站,并且抓取效率有所提高,開發(fā)者無需關注破解js如何加密,是否丟請求、丟參數(shù),大大減少開發(fā)人員的工作時間和出錯概率。
更進一步地,在所述步驟(3)中,還獲取系統(tǒng)中返回的cookie信息。
另外,所述步驟(1)中:
為設置目標執(zhí)行地址到selenium服務塊,然后selenium通過內部webDriver wire協(xié)議調用瀏覽器原生api操作瀏覽器執(zhí)行請求。
更進一步地,所述步驟(2)中:
通過selenium服務發(fā)送獲取頁面服務請求到wire協(xié)議,然后操作瀏覽器api獲取瀏覽器加載的原始頁面。
更進一步地,所述步驟(3)中:
通過wire協(xié)議返回到selenium服務中,當selenium服務拿到頁面后交給解析模塊進行頁面解析。
本領域普通技術人員可以理解,實現(xiàn)上述實施例方法中的全部或部分步驟是可以通過程序來指令相關的硬件來完成,所述的程序可以存儲于一計算機可讀取存儲介質中,該程序在執(zhí)行時,包括上述實施例方法的各步驟,而所述的存儲介質可以是:ROM/RAM、磁碟、光盤、存儲卡等。因此,與本發(fā)明的方法相對應的,本發(fā)明還同時包括一種基于selenium的爬蟲抓取系統(tǒng),該系統(tǒng)通常以與方法各步驟相對應的功能模塊的形式表示。使用該方法的系統(tǒng),其包括:
初始url執(zhí)行模塊,其配置來執(zhí)行初始url;
url地址執(zhí)行模塊,其配置來通過selenium驅動系統(tǒng)瀏覽器執(zhí)行url地址;
解析模塊,其配置來當頁面加載完畢后,獲取頁面進行頁面數(shù)據(jù)解析。
更進一步地,在解析模塊中,還獲取系統(tǒng)中返回的cookie信息。
另外,在初始url執(zhí)行模塊中:
為設置目標執(zhí)行地址到selenium服務塊,然后selenium通過內部webDriver wire協(xié)議調用瀏覽器原生api操作瀏覽器執(zhí)行請求。
更進一步地,在url地址執(zhí)行模塊中:
通過selenium服務發(fā)送獲取頁面服務請求到wire協(xié)議,然后操作瀏覽器api獲取瀏覽器加載的原始頁面。
更進一步地,在解析模塊中:
通過wire協(xié)議返回到selenium服務中,當selenium服務拿到頁面后交給解析模塊進行頁面解析。
以上所述,僅是本發(fā)明的較佳實施例,并非對本發(fā)明作任何形式上的限制,凡是依據(jù)本發(fā)明的技術實質對以上實施例所作的任何簡單修改、等同變化與修飾,均仍屬本發(fā)明技術方案的保護范圍。