網頁爬蟲抓取方法及系統的制作方法
【專利摘要】本發明提供了一種網頁爬蟲抓取方法及系統,根據根節點獲取待爬取頁面中所有鏈接,找出其中未訪問過的鏈接,獲取未訪問鏈接的數據流,對數據流進行清洗后,提取數據流中的文本,本發明通過對數據流的清洗去除無關內容的干擾,且其抓取結果為純文本。
【專利說明】網頁爬蟲抓取方法及系統
[0001]
技術領域
[0002]本發明涉及互聯網信息搜索技術領域,尤其涉及一種網頁爬蟲抓取方法及系統。
【背景技術】
[0003]現有的網頁爬蟲抓取方法會不可避免的引入Jscript腳本以及無關內容,其抓取結果也不是純文本,無法直接用于NLP的數據預處理等后續語義分析。
【發明內容】
[0004]本發明的目的是提供一種網頁爬蟲抓取方法及系統,解決現有的網頁爬蟲抓取結果包含無關內容、且不是純文本的問題。
[0005]本發明解決其技術問題所采用的技術方案是:
一種網頁爬蟲抓取方法,包括:
設置未訪問隊列和已訪問數據庫,將待爬取頁面的鏈接添加到未訪問隊列;
獲取待爬取頁面的根節點;
根據所述根節點,獲取待爬取頁面中的所有鏈接;
將所獲取的鏈接分別與已訪問數據庫中的鏈接進行匹配,在已訪問數據庫中沒有鏈接與該鏈接匹配時,將該鏈接添加到未訪問隊列;
獲取未訪問隊列中每個鏈接所指向頁面的數據流,并將數據流存儲于中間數據庫;
對中間數據庫中的數據流進行清洗;
提取數據流中的文本。
[0006]在此基礎上,進一步地,所述根據所述根節點,獲取待爬取頁面中的所有鏈接的步驟中,獲取鏈接的方式為htmlparser。
[0007]或者,進一步地,所述根據所述根節點,獲取待爬取頁面中的所有鏈接的步驟中,獲取鏈接的方式為寬度優先遍歷。
[0008]在上述任意實施例的基礎上,進一步地,所述根據所述根節點,獲取待爬取頁面中的所有鏈接的步驟后,還包括:
刪除頁面中的自身跳轉鏈接。
[0009]在上述任意實施例的基礎上,進一步地,所述獲取未訪問隊列中每個鏈接所指向頁面的數據流,并將數據流存儲于中間數據庫的步驟中,數據流的存儲格式為HTML格式。
[0010]在上述任意實施例的基礎上,進一步地,所述對中間數據庫中的數據流進行清洗的步驟,具體為:
采用正則表達式匹配的方式,刪除不需要的標簽及其字符;
根據頁面特征裁剪數據流的長度,刪除與正文相同的標簽中不屬于正文的字符;
設置垃圾字符庫,刪除與垃圾字符庫相匹配的垃圾字符所在標簽及其字符。
[0011]在上述任意實施例的基礎上,進一步地,所述對中間數據庫中的數據流進行清洗的步驟后,還包括:
限定數據流的字符長度。
[0012]在上述任意實施例的基礎上,進一步地,所述提取數據流中的文本的步驟中,提取文本的方法為htmlparser庫中的str ingbean方法。
[0013]一種網頁爬蟲抓取系統,包括:
設置模塊,用于設置未訪問隊列和已訪問數據庫,將待爬取頁面的鏈接添加到未訪問隊列;
根節點獲取模塊,用于獲取待爬取頁面的根節點;
鏈接獲取模塊,用于根據所述根節點,獲取待爬取頁面中的所有鏈接;
鏈接匹配模塊,用于將所獲取的鏈接分別與已訪問數據庫中的鏈接進行匹配,在已訪問數據庫中沒有鏈接與該鏈接匹配時,將該鏈接添加到未訪問隊列;
數據流獲取模塊,用于獲取未訪問隊列中每個鏈接所指向頁面的數據流,并將數據流存儲于中間數據庫;
數據流清洗模塊,用于對中間數據庫中的數據流進行清洗;
文本提取模塊,用于提取數據流中的文本。
[0014]本發明的有益效果是:
本發明提供了一種網頁爬蟲抓取方法及系統,根據根節點獲取待爬取頁面中所有鏈接,找出其中未訪問過的鏈接,獲取未訪問鏈接的數據流,對數據流進行清洗后,提取數據流中的文本,本發明通過對數據流的清洗去除無關內容的干擾,且其抓取結果為純文本。
【附圖說明】
[0015]下面結合附圖和實施例對本發明進一步說明。
[0016]圖1示出了本發明實施例提供的一種網頁爬蟲抓取方法的流程圖;
圖2示出了本發明實施例提供的一種網頁爬蟲抓取系統的結構示意圖。
【具體實施方式】
[0017]為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅用以解釋本發明,并不限定本發明。
[0018]具體實施例一
如圖1所示,本發明實施例提供了一種網頁爬蟲抓取方法,包括:
步驟S101,設置未訪問隊列和已訪問數據庫,將待爬取頁面的鏈接添加到未訪問隊列; 步驟S102,獲取待爬取頁面的根節點;
步驟S103,根據所述根節點,獲取待爬取頁面中的所有鏈接;
步驟S104,將所獲取的鏈接分別與已訪問數據庫中的鏈接進行匹配,在已訪問數據庫中沒有鏈接與該鏈接匹配時,將該鏈接添加到未訪問隊列;
步驟S105,獲取未訪問隊列中每個鏈接所指向頁面的數據流,并將數據流存儲于中間數據庫; 步驟S106,對中間數據庫中的數據流進行清洗;
步驟S107,提取數據流中的文本。
[0019]本發明實施例根據根節點獲取待爬取頁面中所有鏈接,找出其中未訪問過的鏈接,獲取未訪問鏈接的數據流,對數據流進行清洗后,提取數據流中的文本。本發明實施例通過對數據流的清洗去除無關內容的干擾,且其抓取結果為純文本。
[0020]本發明實施例對步驟S103中獲取鏈接的方式不做限定,在上述實施例的基礎上,優選的,獲取鏈接的方式可以為111:111]^31861'。111:111]^3^61'在111:1111解析和分析上性能優越,適合抓取網頁數據和改造html的內容。
[0021 ]或者,優選的,步驟S103中獲取鏈接的方式可以為寬度優先遍歷。寬度優先和深度優先相比,深度優先可能會導致過深的遍歷或者陷入“黑洞”,而且一般來說網頁的重要內容的會在網頁的前面幾級節點上,故使用深度優先不符合現實需求。
[0022]在上述任意實施例的基礎上,優選的,本發明實施例在步驟S103后,還可以包括:刪除頁面中的自身跳轉鏈接。這樣做的好處是,減少系統的重復工作量,提升系統的工作效率。
[0023]本發明實施例對步驟S105中數據流的存儲格式不做限定,在上述任意實施例的基礎上,優選的,數據流的存儲格式可以為HTML格式。HTML文本是由HTML命令組成的描述性文本,HTML命令可以說明文字、圖形、動畫、聲音、表格、鏈接等,使用HTML語言可以把存放在一臺電腦中的文本或圖形與另一臺電腦中的文本或圖形方便地聯系在一起,形成有機整體。
[0024]本發明實施例對步驟S106中數據流的清洗方式不做限定,在上述任意實施例的基礎上,優選的,其清洗過程可以具體為:采用正則表達式匹配的方式,刪除不需要的標簽及其字符;根據頁面特征裁剪數據流的長度,刪除與正文相同的標簽中不屬于正文的字符;設置垃圾字符庫,刪除與垃圾字符庫相匹配的垃圾字符所在標簽及其字符。這樣做的好處是,清除無關內容的干擾。
[0025]在上述任意實施例的基礎上,優選的,本發明實施例在步驟S106后,還可以包括:限定數據流的字符長度。這樣做的好處是,使人們可以得到符合自己要求的文本。
[0026]本發明實施例對步驟S107中提取文本的方法不做限定,在上述任意實施例的基礎上,優選的,提取文本的方法可以為htmlparser庫中的str ingbean方法。Str ingbean方法可以從一個指定的URL獲取移除〈SCRIPTX/SCRIPT〉和〈PREX/PRE〉之間代碼的html代碼,也可以用做Vi si tor,用來移除這兩種標簽內部的代碼,采用StringBean.getStrings()來獲取結果。
[0027]具體實施例二
如圖2所示,本發明實施例提供了一種網頁爬蟲抓取系統,包括:
設置模塊,用于設置未訪問隊列和已訪問數據庫,將待爬取頁面的鏈接添加到未訪問隊列;
根節點獲取模塊,用于獲取待爬取頁面的根節點;
鏈接獲取模塊,用于根據所述根節點,獲取待爬取頁面中的所有鏈接;
鏈接匹配模塊,用于將所獲取的鏈接分別與已訪問數據庫中的鏈接進行匹配,在已訪問數據庫中沒有鏈接與該鏈接匹配時,將該鏈接添加到未訪問隊列; 數據流獲取模塊,用于獲取未訪問隊列中每個鏈接所指向頁面的數據流,并將數據流存儲于中間數據庫;
數據流清洗模塊,用于對中間數據庫中的數據流進行清洗;
文本提取模塊,用于提取數據流中的文本。
[0028]本發明實施例根據根節點獲取待爬取頁面中所有鏈接,找出其中未訪問過的鏈接,獲取未訪問鏈接的數據流,對數據流進行清洗后,提取數據流中的文本。本發明實施例通過對數據流的清洗去除無關內容的干擾,且其抓取結果為純文本。
[0029]盡管本發明已進行了一定程度的描述,明顯地,在不脫離本發明的精神和范圍的條件下,可進行各個條件的適當變化。可以理解,本發明不限于所述實施方案,而歸于權利要求的范圍,其包括所述每個因素的等同替換。
【主權項】
1.一種網頁爬蟲抓取方法,其特征在于,包括: 設置未訪問隊列和已訪問數據庫,將待爬取頁面的鏈接添加到未訪問隊列; 獲取待爬取頁面的根節點; 根據所述根節點,獲取待爬取頁面中的所有鏈接; 將所獲取的鏈接分別與已訪問數據庫中的鏈接進行匹配,在已訪問數據庫中沒有鏈接與該鏈接匹配時,將該鏈接添加到未訪問隊列; 獲取未訪問隊列中每個鏈接所指向頁面的數據流,并將數據流存儲于中間數據庫; 對中間數據庫中的數據流進行清洗; 提取數據流中的文本。2.根據權利要求1所述的網頁爬蟲抓取方法,其特征在于,所述根據所述根節點,獲取待爬取頁面中的所有鏈接的步驟中,獲取鏈接的方式為htmlparser。3.根據權利要求1所述的網頁爬蟲抓取方法,其特征在于,所述根據所述根節點,獲取待爬取頁面中的所有鏈接的步驟中,獲取鏈接的方式為寬度優先遍歷。4.根據權利要求1或2所述的網頁爬蟲抓取方法,其特征在于,所述根據所述根節點,獲取待爬取頁面中的所有鏈接的步驟后,還包括: 刪除頁面中的自身跳轉鏈接。5.根據權利要求1或2所述的網頁爬蟲抓取方法,其特征在于,所述獲取未訪問隊列中每個鏈接所指向頁面的數據流,并將數據流存儲于中間數據庫的步驟中,數據流的存儲格式為HTML格式。6.根據權利要求1或2所述的網頁爬蟲抓取方法,其特征在于,所述對中間數據庫中的數據流進行清洗的步驟,具體為: 采用正則表達式匹配的方式,刪除不需要的標簽及其字符; 根據頁面特征裁剪數據流的長度,刪除與正文相同的標簽中不屬于正文的字符; 設置垃圾字符庫,刪除與垃圾字符庫相匹配的垃圾字符所在標簽及其字符。7.根據權利要求1或2所述的網頁爬蟲抓取方法,其特征在于,所述對中間數據庫中的數據流進行清洗的步驟后,還包括: 限定數據流的字符長度。8.根據權利要求1或2所述的網頁爬蟲抓取方法,其特征在于,所述提取數據流中的文本的步驟中,提取文本的方法為htmlparser庫中的stringbean方法。9.一種網頁爬蟲抓取系統,其特征在于,包括: 設置模塊,用于設置未訪問隊列和已訪問數據庫,將待爬取頁面的鏈接添加到未訪問隊列; 根節點獲取模塊,用于獲取待爬取頁面的根節點; 鏈接獲取模塊,用于根據所述根節點,獲取待爬取頁面中的所有鏈接; 鏈接匹配模塊,用于將所獲取的鏈接分別與已訪問數據庫中的鏈接進行匹配,在已訪問數據庫中沒有鏈接與該鏈接匹配時,將該鏈接添加到未訪問隊列; 數據流獲取模塊,用于獲取未訪問隊列中每個鏈接所指向頁面的數據流,并將數據流存儲于中間數據庫; 數據流清洗模塊,用于對中間數據庫中的數據流進行清洗;文本提取模塊,用于提取數據流中的文本。
【文檔編號】G06F17/30GK106055722SQ201610592441
【公開日】2016年10月26日
【申請日】2016年7月26日 公開號201610592441.4, CN 106055722 A, CN 106055722A, CN 201610592441, CN-A-106055722, CN106055722 A, CN106055722A, CN201610592441, CN201610592441.4
【發明人】彭德光, 利節, 孫健, 李鵬華
【申請人】重慶兆光科技股份有限公司