本申請(qǐng)涉及數(shù)據(jù)處理領(lǐng)域,具體而言,涉及一種論壇目錄頁內(nèi)容解析方法和裝置。
背景技術(shù):
通過網(wǎng)絡(luò)爬蟲來爬取互聯(lián)網(wǎng)上的論壇數(shù)據(jù)與爬取新聞?lì)悢?shù)據(jù)具有很大的區(qū)別,新聞?lì)悢?shù)據(jù)的爬取是一次性的,而論壇數(shù)據(jù)由于不定期的有用戶回復(fù),需要進(jìn)行多次爬取以此獲得最新的回復(fù)數(shù)據(jù)。目前網(wǎng)絡(luò)上論壇類網(wǎng)頁的一個(gè)顯著特點(diǎn)就是目錄頁面的缺省排序是按照文章的最后回復(fù)時(shí)間進(jìn)行排序,因而網(wǎng)絡(luò)爬蟲爬取的數(shù)據(jù)并不是按照文章的發(fā)表時(shí)間排序的。當(dāng)前網(wǎng)絡(luò)爬蟲在爬取論壇目錄頁內(nèi)容時(shí),一般是預(yù)先指定爬取規(guī)則(例如,針對(duì)有翻頁的論壇目錄頁,指定最大翻頁數(shù)),然后再利用爬取技術(shù)來逐步翻頁爬取每個(gè)頁面的內(nèi)容,再通過解析網(wǎng)絡(luò)爬蟲爬取到的數(shù)據(jù),依次判別其是否屬于發(fā)表時(shí)間在預(yù)設(shè)時(shí)間閥值之前的數(shù)據(jù),如果是的話則認(rèn)為是舊文章并丟棄,否則保存。
由于現(xiàn)有技術(shù)在爬取論壇目錄頁的內(nèi)容時(shí),只能在網(wǎng)絡(luò)爬蟲爬完目標(biāo)論壇目錄頁以后,通過解析爬取的內(nèi)容獲取文章的發(fā)表時(shí)間,然后再根據(jù)該發(fā)表時(shí)間來判斷該文章是否要保存或丟棄,這樣一來,網(wǎng)絡(luò)爬蟲需要爬取論壇目錄頁的所有文章才能判斷是否要丟棄,如果丟棄的比率很高的話(例如,爬取人氣不高的論壇網(wǎng)站,每天的更新率只有一兩篇文章,為了把這一兩篇文章爬取回來,需要爬取整個(gè)論壇目錄頁的文章),將帶來極大的網(wǎng)絡(luò)資源和帶寬的浪費(fèi),而且本地解析也將耗時(shí)費(fèi)力,造成資源的浪費(fèi)。
針對(duì)相關(guān)技術(shù)中解析爬取到的論壇目錄頁內(nèi)容時(shí)浪費(fèi)資源的問題,目前尚未提出有效的解決方案。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)的主要目的在于提供一種論壇目錄頁內(nèi)容解析方法和裝置,以解決相關(guān)技術(shù)中解析爬取到的論壇目錄頁內(nèi)容時(shí)浪費(fèi)資源的問題。
為了實(shí)現(xiàn)上述目的,根據(jù)本申請(qǐng)的一個(gè)方面,提供了一種論壇目錄頁內(nèi)容解析方法。該方法包括:按照預(yù)設(shè)排序規(guī)則爬取論壇目錄頁中的文章,得到爬取結(jié)果,其中,預(yù)設(shè)排序規(guī)則用于使論壇目錄頁中的文章按照發(fā)表時(shí)間排序;按照預(yù)設(shè)順序依次解析 爬取結(jié)果中的文章;判斷當(dāng)前解析的文章的發(fā)表時(shí)間是否晚于預(yù)設(shè)時(shí)間;在判斷出當(dāng)前解析的文章的發(fā)表時(shí)間晚于預(yù)設(shè)時(shí)間時(shí),繼續(xù)解析爬取結(jié)果中的文章;以及在判斷出當(dāng)前解析的文章的發(fā)表時(shí)間不晚于預(yù)設(shè)時(shí)間時(shí),停止解析爬取結(jié)果中的文章。
進(jìn)一步地,按照預(yù)設(shè)排序規(guī)則爬取論壇目錄頁中的文章,得到爬取結(jié)果包括:獲取論壇目錄頁的鏈接;根據(jù)論壇目錄頁的鏈接按照預(yù)設(shè)排序規(guī)則構(gòu)建爬取請(qǐng)求,其中,根據(jù)爬取請(qǐng)求從服務(wù)器獲取到的論壇目錄頁中的文章按照發(fā)表時(shí)間排序;以及根據(jù)爬取請(qǐng)求爬取論壇目錄頁中的文章,得到爬取結(jié)果。
進(jìn)一步地,判斷當(dāng)前解析的文章的發(fā)表時(shí)間是否晚于預(yù)設(shè)時(shí)間包括:通過預(yù)設(shè)算法從當(dāng)前解析的文章中解析出發(fā)表時(shí)間;以及判斷發(fā)表時(shí)間是否晚于預(yù)設(shè)時(shí)間。
進(jìn)一步地,在判斷出當(dāng)前解析的文章的發(fā)表時(shí)間晚于預(yù)設(shè)時(shí)間時(shí),該方法還包括:解析當(dāng)前解析的文章的鏈接;以及將當(dāng)前解析的文章的鏈接添加至爬取隊(duì)列中。
進(jìn)一步地,論壇目錄頁包括多個(gè)爬取頁面,第一爬取頁面為多個(gè)爬取頁面中任意一個(gè)爬取頁面,按照預(yù)設(shè)排序規(guī)則爬取論壇目錄頁中的文章,得到爬取結(jié)果包括:按照預(yù)設(shè)排序規(guī)則爬取論壇目錄頁的第一爬取頁面中的文章,得到爬取結(jié)果,在判斷出當(dāng)前解析的文章的發(fā)表時(shí)間不晚于預(yù)設(shè)時(shí)間時(shí),該方法還包括:停止爬取位于第一爬取頁面之后的爬取頁面中的文章。
為了實(shí)現(xiàn)上述目的,根據(jù)本申請(qǐng)的另一方面,提供了一種論壇目錄頁內(nèi)容解析裝置。該裝置包括:爬取單元,用于按照預(yù)設(shè)排序規(guī)則爬取論壇目錄頁中的文章,得到爬取結(jié)果,其中,預(yù)設(shè)排序規(guī)則用于使論壇目錄頁中的文章按照發(fā)表時(shí)間排序;第一解析單元,用于按照預(yù)設(shè)順序依次解析爬取結(jié)果中的文章;判斷單元,用于判斷當(dāng)前解析的文章的發(fā)表時(shí)間是否晚于預(yù)設(shè)時(shí)間;以及第二解析單元,用于在判斷出當(dāng)前解析的文章的發(fā)表時(shí)間晚于預(yù)設(shè)時(shí)間時(shí),繼續(xù)解析爬取結(jié)果中的文章,在判斷出當(dāng)前解析的文章的發(fā)表時(shí)間不晚于預(yù)設(shè)時(shí)間時(shí),停止解析爬取結(jié)果中的文章。
進(jìn)一步地,爬取單元包括:獲取模塊,用于獲取論壇目錄頁的鏈接;構(gòu)建模塊,用于根據(jù)論壇目錄頁的鏈接按照預(yù)設(shè)排序規(guī)則構(gòu)建爬取請(qǐng)求,其中,根據(jù)爬取請(qǐng)求從服務(wù)器獲取到的論壇目錄頁中的文章按照發(fā)表時(shí)間排序;以及第一爬取模塊,用于根據(jù)爬取請(qǐng)求爬取論壇目錄頁中的文章,得到爬取結(jié)果。
進(jìn)一步地,判斷單元包括:解析模塊,用于通過預(yù)設(shè)算法從當(dāng)前解析的文章中解析出發(fā)表時(shí)間;以及判斷模塊,用于判斷發(fā)表時(shí)間是否晚于預(yù)設(shè)時(shí)間。
進(jìn)一步地,該裝置還包括:第三解析單元,用于解析當(dāng)前解析的文章的鏈接;以及添加單元,用于將當(dāng)前解析的文章的鏈接添加至爬取隊(duì)列中。
進(jìn)一步地,論壇目錄頁包括多個(gè)爬取頁面,第一爬取頁面為多個(gè)爬取頁面中任意一個(gè)爬取頁面,爬取單元包括:第二爬取模塊,用于按照預(yù)設(shè)排序規(guī)則爬取論壇目錄頁的第一爬取頁面中的文章,得到爬取結(jié)果,該裝置還包括:停止單元,用于停止爬取位于第一爬取頁面之后的爬取頁面中的文章。
本申請(qǐng)通過按照預(yù)設(shè)排序規(guī)則爬取論壇目錄頁中的文章,得到爬取結(jié)果,其中,預(yù)設(shè)排序規(guī)則用于使論壇目錄頁中的文章按照發(fā)表時(shí)間排序;按照預(yù)設(shè)順序依次解析爬取結(jié)果中的文章;判斷當(dāng)前解析的文章的發(fā)表時(shí)間是否晚于預(yù)設(shè)時(shí)間;在判斷出當(dāng)前解析的文章的發(fā)表時(shí)間晚于預(yù)設(shè)時(shí)間時(shí),繼續(xù)解析爬取結(jié)果中的文章;以及在判斷出當(dāng)前解析的文章的發(fā)表時(shí)間不晚于預(yù)設(shè)時(shí)間時(shí),停止解析爬取結(jié)果中的文章,在本申請(qǐng)中根據(jù)預(yù)設(shè)排序規(guī)則爬取到的論壇目錄頁中的文章是按照發(fā)表時(shí)間排序的,因此一旦判斷出爬取結(jié)果中某篇文章的發(fā)表時(shí)間早于預(yù)設(shè)時(shí)間,則無需繼續(xù)解析爬取結(jié)果中該篇文章之后的文章,降低了本地解析對(duì)資源的占用,提高了本地解析爬取到的論壇目錄頁內(nèi)容的效率,解決了相關(guān)技術(shù)中解析爬取到的論壇目錄頁內(nèi)容時(shí)浪費(fèi)資源的問題,進(jìn)而達(dá)到了降低本地解析爬取到的論壇目錄頁內(nèi)容時(shí)對(duì)資源的占用以及提高解析爬取到的論壇目錄頁內(nèi)容的效率的效果。
附圖說明
構(gòu)成本申請(qǐng)的一部分的附圖用來提供對(duì)本申請(qǐng)的進(jìn)一步理解,本申請(qǐng)的示意性實(shí)施例及其說明用于解釋本申請(qǐng),并不構(gòu)成對(duì)本申請(qǐng)的不當(dāng)限定。在附圖中:
圖1是根據(jù)本申請(qǐng)實(shí)施例的論壇目錄頁內(nèi)容解析方法的流程圖;以及
圖2是根據(jù)本申請(qǐng)實(shí)施例的論壇目錄頁內(nèi)容解析裝置的示意圖。
具體實(shí)施方式
需要說明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互組合。下面將參考附圖并結(jié)合實(shí)施例來詳細(xì)說明本申請(qǐng)。
為了使本技術(shù)領(lǐng)域的人員更好地理解本申請(qǐng)方案,下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分的實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本申請(qǐng)保護(hù)的范圍。
需要說明的是,本申請(qǐng)的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對(duì)象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這 樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本申請(qǐng)的實(shí)施例。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
為了便于描述,以下對(duì)本申請(qǐng)涉及的一些概念或術(shù)語進(jìn)行說明:
論壇目錄頁,是指論壇網(wǎng)站中顯示用戶發(fā)表的文章的目錄頁面。
論壇內(nèi)容頁,是指論壇網(wǎng)站中顯示用戶發(fā)表的文章的詳細(xì)頁面。
url,即統(tǒng)一資源定位符,也稱為鏈接或是超級(jí)鏈接,是指訪問一個(gè)網(wǎng)站需要的地址,例如,http://www.baidu.com。
爬蟲系統(tǒng),是指用于執(zhí)行網(wǎng)頁內(nèi)容爬取的系統(tǒng),在該爬蟲系統(tǒng)中設(shè)置有網(wǎng)絡(luò)爬蟲,其中,網(wǎng)絡(luò)爬蟲是一種按照預(yù)設(shè)規(guī)則自動(dòng)抓取萬維網(wǎng)信息的程序或者腳本。
爬取請(qǐng)求,包括待爬取網(wǎng)頁的地址、cookie等數(shù)據(jù),網(wǎng)絡(luò)爬蟲在需要爬取某個(gè)網(wǎng)頁內(nèi)容時(shí)向服務(wù)器發(fā)送爬取請(qǐng)求,服務(wù)器解析爬取請(qǐng)求并返回對(duì)應(yīng)網(wǎng)頁的內(nèi)容。
根據(jù)本申請(qǐng)實(shí)施例,提供了一種論壇目錄頁內(nèi)容解析方法。圖1是根據(jù)本申請(qǐng)實(shí)施例的論壇目錄頁內(nèi)容解析方法的流程圖,如圖1所示,該方法包括如下的步驟s102至步驟s110:
步驟s102,按照預(yù)設(shè)排序規(guī)則爬取論壇目錄頁中的文章,得到爬取結(jié)果,其中,預(yù)設(shè)排序規(guī)則用于使論壇目錄頁中的文章按照發(fā)表時(shí)間排序。
本申請(qǐng)實(shí)施例的預(yù)設(shè)排序規(guī)則用于使論壇目錄頁的內(nèi)容按照發(fā)表時(shí)間排序,具體地,該預(yù)設(shè)排序規(guī)則應(yīng)當(dāng)根據(jù)網(wǎng)站的特點(diǎn)進(jìn)行設(shè)置,例如,在論壇目錄頁地址中增加?orderby=dateline,或是將論壇目錄頁地址中的.htm替換為-1-1.aspx,或是將論壇目錄頁的cookie中的參數(shù)orderby_dateline置為1等。
具體地,本申請(qǐng)實(shí)施例可以將預(yù)設(shè)排序規(guī)則可以配置在爬蟲系統(tǒng)中,例如,直接配置在爬蟲系統(tǒng)的數(shù)據(jù)庫中,或配置在爬蟲系統(tǒng)相應(yīng)的配置文件中等,也可以將預(yù)設(shè)排序規(guī)則配置在網(wǎng)絡(luò)上。
優(yōu)選地,按照預(yù)設(shè)排序規(guī)則爬取論壇目錄頁中的文章,得到爬取結(jié)果包括:獲取論壇目錄頁的鏈接;根據(jù)論壇目錄頁的鏈接按照預(yù)設(shè)排序規(guī)則構(gòu)建爬取請(qǐng)求,其中,根據(jù)爬取請(qǐng)求從服務(wù)器獲取到的論壇目錄頁中的文章按照發(fā)表時(shí)間排序;以及根據(jù)爬取請(qǐng)求爬取論壇目錄頁中的文章,得到爬取結(jié)果。
例如,預(yù)設(shè)排序規(guī)則為在論壇目錄頁的鏈接中增加?orderby=dateline,網(wǎng)絡(luò)爬蟲在獲取到論壇目錄頁的鏈接后在該鏈接中增加?orderby=dateline,得到新的鏈接,例如,某個(gè)論壇目錄頁的鏈接為http://bbs.xxx.com/forum-23432-1.html,增加?orderby=dateline后得到的新的鏈接為http://bbs.xxx.com/forum-23432-1.html?orderby=dateline,并根據(jù)該新的鏈接創(chuàng)建爬取請(qǐng)求發(fā)送給網(wǎng)站服務(wù)器,網(wǎng)站服務(wù)器對(duì)該爬取請(qǐng)求進(jìn)行解析,并根據(jù)新的鏈接中的orderby=dateline將該論壇目錄頁對(duì)應(yīng)的文章按照發(fā)表時(shí)間排序后返回給網(wǎng)絡(luò)爬蟲,從而網(wǎng)絡(luò)爬蟲接收到的論壇目錄頁的文章為按照發(fā)表時(shí)間排序的,即網(wǎng)絡(luò)爬蟲爬取到的論壇目錄頁的文章為按照發(fā)表時(shí)間排序的。
需要說明的是,預(yù)設(shè)排序規(guī)則也可以是在論壇目錄頁地址中增加?orderby=dateline,或是將論壇目錄頁地址中的.htm替換為-1-1.aspx等,具體實(shí)現(xiàn)論壇目錄頁的文章按照發(fā)表時(shí)間排序的過程同上,在此不再贅述。
步驟s104,按照預(yù)設(shè)順序依次解析爬取結(jié)果中的文章。
由于通過步驟s102爬取到的論壇目錄頁中的文章為按照發(fā)表時(shí)間排序的,本申請(qǐng)實(shí)施例可以按照從上往下的順序依次解析爬取結(jié)果中的文章。
步驟s106,判斷當(dāng)前解析的文章的發(fā)表時(shí)間是否晚于預(yù)設(shè)時(shí)間。
可選地,判斷當(dāng)前解析的文章的發(fā)表時(shí)間是否晚于預(yù)設(shè)時(shí)間包括:通過預(yù)設(shè)算法從當(dāng)前解析的文章中解析出發(fā)表時(shí)間;以及判斷發(fā)表時(shí)間是否晚于預(yù)設(shè)時(shí)間。
本申請(qǐng)實(shí)施例的預(yù)設(shè)算法可以是任意解析出文章的發(fā)表時(shí)間的算法,可選地,預(yù)設(shè)算法可以是正則匹配算法、xpath算法等,其中,xpath算法是指可擴(kuò)展標(biāo)記語言(extensiblemarkuplanguage,簡稱為xml)路徑語言,它是一種用來確定xml(即標(biāo)準(zhǔn)通用標(biāo)記語言的子集)文檔中某部分位置的語言,xpath算法基于xml的樹狀結(jié)構(gòu),提供在數(shù)據(jù)結(jié)構(gòu)樹中找尋節(jié)點(diǎn)的能力。
在解析出文章的發(fā)表時(shí)間之后,即可以將該發(fā)表時(shí)間與預(yù)設(shè)時(shí)間進(jìn)行比較以判斷是否需要爬取該文章對(duì)應(yīng)的論壇內(nèi)容頁。
步驟s108,在判斷出當(dāng)前解析的文章的發(fā)表時(shí)間晚于預(yù)設(shè)時(shí)間時(shí),繼續(xù)解析爬取結(jié)果中的文章。
在判斷出當(dāng)前解析的文章的發(fā)表時(shí)間晚于預(yù)設(shè)時(shí)間時(shí),說明爬取結(jié)果中位于當(dāng)前解析的文章之后的文章可能還是需要爬取的內(nèi)容,因此,繼續(xù)解析爬取結(jié)果中后續(xù)的文章。
可選地,在判斷出當(dāng)前解析的文章的發(fā)表時(shí)間晚于預(yù)設(shè)時(shí)間時(shí),該方法還包括:解析當(dāng)前解析的文章的鏈接;以及將當(dāng)前解析的文章的鏈接添加至爬取隊(duì)列中。
本申請(qǐng)實(shí)施例在判斷出當(dāng)前解析的文章的發(fā)表時(shí)間晚于預(yù)設(shè)時(shí)間時(shí),解析當(dāng)前解析的文章的鏈接,當(dāng)前解析的文章的鏈接即指該文章對(duì)應(yīng)的論壇內(nèi)容頁的鏈接,并將其鏈接添加至爬取隊(duì)列中以供爬蟲后續(xù)爬取。
例如,爬取結(jié)果中包括20篇按照發(fā)表時(shí)間排序的文章,按照從上到下的順序依次解析這20篇文章,假設(shè)當(dāng)前解析的文章為第10篇文章a10,首先解析文章a10的發(fā)表時(shí)間t10,并將該發(fā)表時(shí)間t10與預(yù)設(shè)時(shí)間t比較,如果發(fā)表時(shí)間t10不晚于預(yù)設(shè)時(shí)間t,則停止解析爬取結(jié)果中后續(xù)的文章,即第11篇文章至第20篇文章;如果發(fā)表時(shí)間t10晚于預(yù)設(shè)時(shí)間t,則解析文章a10的鏈接,即文章a10對(duì)應(yīng)的論壇內(nèi)容頁的鏈接,并添加至爬取隊(duì)列中,同時(shí),繼續(xù)解析第11篇文章a11,以此類推,直至某篇文章的發(fā)表時(shí)間不晚于預(yù)設(shè)時(shí)間t。
步驟s110,在判斷出當(dāng)前解析的文章的發(fā)表時(shí)間不晚于預(yù)設(shè)時(shí)間時(shí),停止解析爬取結(jié)果中的文章。
由于爬取結(jié)果中的文章是按照發(fā)表時(shí)間進(jìn)行排序的,因此在判斷出當(dāng)前解析的文章的發(fā)表時(shí)間不晚于預(yù)設(shè)時(shí)間時(shí),則說明該篇文章之后的文章均為不需要爬取的文章。從而可以直接停止解析爬取結(jié)果中剩余的文章。
本申請(qǐng)實(shí)施例通過按照預(yù)設(shè)排序規(guī)則爬取論壇目錄頁中的文章,得到爬取結(jié)果,其中,預(yù)設(shè)排序規(guī)則用于使論壇目錄頁中的文章按照發(fā)表時(shí)間排序;按照預(yù)設(shè)順序依次解析爬取結(jié)果中的文章;判斷當(dāng)前解析的文章的發(fā)表時(shí)間是否晚于預(yù)設(shè)時(shí)間;在判斷出當(dāng)前解析的文章的發(fā)表時(shí)間晚于預(yù)設(shè)時(shí)間時(shí),繼續(xù)解析爬取結(jié)果中的文章;以及在判斷出當(dāng)前解析的文章的發(fā)表時(shí)間不晚于預(yù)設(shè)時(shí)間時(shí),停止解析爬取結(jié)果中的文章,在本申請(qǐng)實(shí)施例中根據(jù)預(yù)設(shè)排序規(guī)則爬取到的論壇目錄頁中的文章是按照發(fā)表時(shí)間排序的,因此一旦判斷出爬取結(jié)果中某篇文章的發(fā)表時(shí)間早于預(yù)設(shè)時(shí)間,則無需繼續(xù)解析爬取結(jié)果中該篇文章之后的文章,降低了本地解析對(duì)資源的占用,提高了本地解析爬取到的論壇目錄頁內(nèi)容的效率,解決了相關(guān)技術(shù)中解析爬取到的論壇目錄頁內(nèi)容時(shí)浪費(fèi)資源的問題,進(jìn)而達(dá)到了降低本地解析爬取到的論壇目錄頁內(nèi)容時(shí)對(duì)資源的占用以及提高解析爬取到的論壇目錄頁內(nèi)容的效率的效果。
優(yōu)選地,論壇目錄頁包括多個(gè)爬取頁面,第一爬取頁面為多個(gè)爬取頁面中任意一個(gè)爬取頁面,按照預(yù)設(shè)排序規(guī)則爬取論壇目錄頁中的文章,得到爬取結(jié)果包括:按照預(yù)設(shè)排序規(guī)則爬取論壇目錄頁的第一爬取頁面中的文章,得到爬取結(jié)果,在判斷出當(dāng)前解析的文章的發(fā)表時(shí)間不晚于預(yù)設(shè)時(shí)間時(shí),該方法還包括:停止爬取位于第一爬取頁面之后的爬取頁面中的文章。
實(shí)際情況中,論壇目錄頁通常包含多個(gè)爬取頁面,每個(gè)爬取頁面顯示預(yù)設(shè)數(shù)量的 文章目錄,例如,爬取頁面1用于顯示第1至20條文章目錄,爬取頁面2用于顯示第21至40條文章目錄,爬取頁面3用于顯示第41至60條文章目錄,以此類推,直至顯示完當(dāng)前論壇的所有的文章目錄。通常,通過點(diǎn)擊該文章目錄即可以跳轉(zhuǎn)至該文章目錄表示的文章的詳細(xì)頁面,即文章的論壇內(nèi)容頁。
本申請(qǐng)實(shí)施例的第一爬取頁面可以是多個(gè)爬取頁面中任意一個(gè)爬取頁面,以下以第一爬取頁面為例對(duì)本申請(qǐng)實(shí)施例進(jìn)行說明:網(wǎng)絡(luò)爬蟲首先爬取第一爬取頁面中的文章,得到爬取結(jié)果,按照預(yù)設(shè)順序依次解析爬取結(jié)果中每一篇文章的發(fā)表時(shí)間,并與預(yù)設(shè)時(shí)間比較,如果某篇文章的發(fā)表時(shí)間不晚于預(yù)設(shè)值,則不再解析該篇文章之后的文章,同時(shí),網(wǎng)絡(luò)爬蟲停止爬取第一爬取頁面之后的爬取頁面中的文章,從而可以節(jié)省網(wǎng)絡(luò)資源。
根據(jù)本申請(qǐng)又一實(shí)施例的論壇目錄頁內(nèi)容解析方法,包括如下步驟:
步驟s202,獲取目標(biāo)論壇目錄頁的預(yù)設(shè)排序規(guī)則。
本申請(qǐng)實(shí)施例可以預(yù)先在爬蟲系統(tǒng)中配置目標(biāo)論壇目錄頁的預(yù)設(shè)排序規(guī)則,其中,預(yù)設(shè)排序規(guī)則用于使論壇目錄頁的內(nèi)容按照發(fā)表時(shí)間排序,具體地,應(yīng)當(dāng)根據(jù)網(wǎng)站的特點(diǎn)進(jìn)行設(shè)置,例如,可以是在論壇目錄頁地址中增加?orderby=dateline,或是將論壇目錄頁地址中的.htm替換為-1-1.aspx,或是將論壇目錄頁的cookie中的參數(shù)orderby_dateline置為1等。
步驟s204,爬蟲對(duì)論壇目錄頁按照步驟s202中配置的預(yù)設(shè)排序規(guī)則進(jìn)行網(wǎng)絡(luò)爬取,然后按照從上到下的順序依次解析爬取結(jié)果中的文章的發(fā)表日期。
在步驟s204中,網(wǎng)絡(luò)爬蟲對(duì)論壇目錄頁按照步驟s202中配置的預(yù)設(shè)排序規(guī)則進(jìn)行網(wǎng)絡(luò)爬取,然后按照從上到下的順序依次解析爬取結(jié)果中的文章的發(fā)表日期。
由于步驟s202中配置的預(yù)設(shè)排序規(guī)則用于使論壇目錄頁的內(nèi)容按照發(fā)表時(shí)間排序,所以在步驟s204中爬取的數(shù)據(jù)必定是按照文章的發(fā)表時(shí)間排序的,即最新的文章排列在前面。具體地,網(wǎng)絡(luò)爬蟲可以采用某個(gè)預(yù)設(shè)算法,例如,正則匹配算法、xpath算法等依次解析爬取結(jié)果中各個(gè)文章的發(fā)表時(shí)間。
步驟s206,如果步驟s204解析出來的某篇文章的發(fā)表時(shí)間在爬蟲系統(tǒng)預(yù)先定義的時(shí)間閥值內(nèi),則執(zhí)行步驟s208,否則本次爬取結(jié)束。
具體地,時(shí)間閥值即預(yù)設(shè)時(shí)間,在步驟s206中,如果步驟s204解析出來的某篇文章的發(fā)表時(shí)間在爬蟲系統(tǒng)預(yù)先定義的時(shí)間閥值內(nèi),則執(zhí)行步驟s208,否則本次爬取結(jié)束,即解析出來的某篇文章的發(fā)表時(shí)間在爬蟲系統(tǒng)預(yù)先定義的時(shí)間閥值之外時(shí),停止解析該篇文章之后的文章,同時(shí)停止爬取論壇目錄頁剩余爬取頁面中的內(nèi)容。
例如,爬蟲系統(tǒng)預(yù)先定義僅爬取3天以內(nèi)的論壇數(shù)據(jù),如果當(dāng)前解析的文章的發(fā)表時(shí)間是在1天以前,則說明該文章是在時(shí)間閥值以內(nèi),應(yīng)該繼續(xù)進(jìn)入步驟s208進(jìn)行后繼爬??;相反,如果當(dāng)前解析的文章的發(fā)表時(shí)間超過了3天,則表明該文章不在系統(tǒng)規(guī)定的時(shí)間閥值內(nèi),屬于不需爬取的文章。此外,由于步驟s202中已經(jīng)定義了論壇目錄頁的內(nèi)容的預(yù)設(shè)排序規(guī)則是按照發(fā)表時(shí)間排序,則說明當(dāng)前解析的文章以后的所有文章也屬于超過時(shí)間閥值的文章,不應(yīng)該繼續(xù)爬取,所以應(yīng)該終止本次爬取。
步驟s208,解析該篇文章的url,并添加到爬取隊(duì)列中,并繼續(xù)執(zhí)行步驟s206。
在步驟s208中,如果在步驟s206中確定某篇文章的發(fā)表時(shí)間在時(shí)間閥值內(nèi),則應(yīng)該解析該篇文章對(duì)應(yīng)的url(具體指該篇文章的論壇目錄頁的url),并添加到爬取隊(duì)列中作為后續(xù)的爬取對(duì)象,而本次爬取過程則返回到步驟s206,繼續(xù)處理爬取結(jié)果中的其他文章。
需要說明的是,目前網(wǎng)絡(luò)上的常見論壇目錄頁的缺省排序均為按照最后回復(fù)時(shí)間進(jìn)行排序,這就意味著一篇發(fā)表在數(shù)年前或者數(shù)月前的文章僅僅是由于剛剛被回復(fù)了就能排到論壇目錄頁的前面,因此,本申請(qǐng)通過配置論壇目錄頁的排序規(guī)則,使得爬取結(jié)果是按照文章發(fā)表時(shí)間排序,并依次解析爬取結(jié)果中每篇文章的發(fā)表時(shí)間,一旦發(fā)現(xiàn)某文章超出預(yù)設(shè)的時(shí)間閾值,則終止繼續(xù)解析爬取結(jié)果中的其它文章。
從以上的描述中,可以看出,本申請(qǐng)通過先對(duì)論壇目錄頁的文章按照發(fā)表時(shí)間排序后來判斷論壇目錄頁中的文章是否需要爬取,具體地,通過配置目標(biāo)論壇的論壇目錄頁的預(yù)設(shè)排序規(guī)則,在網(wǎng)絡(luò)爬蟲爬取論壇目錄頁時(shí)自動(dòng)添加該預(yù)設(shè)排序規(guī)則,這樣網(wǎng)絡(luò)爬蟲爬取回來的論壇目錄頁就是按照文章發(fā)表時(shí)間排序的,最新發(fā)表的文章排在最前面,網(wǎng)絡(luò)爬蟲只需依次解析爬回?cái)?shù)據(jù)中每篇文章的發(fā)表時(shí)間,如果發(fā)表時(shí)間在允許的時(shí)間閥值內(nèi),則添加該文章的鏈接到爬取隊(duì)列中,如果發(fā)表時(shí)間超過了允許的時(shí)間閥值,則無須爬取該文章(具體指爬取該文章的論壇內(nèi)容頁),直接丟棄即可。此外,由于該論壇目錄頁面是已經(jīng)按照文章發(fā)表時(shí)間排序的,所以也即表明該文章之后的文章的發(fā)表時(shí)間也必定超過允許的時(shí)間閥值,則網(wǎng)絡(luò)爬蟲可以直接跳過后面的所有文章爬取,達(dá)到快速判斷的目的,以此節(jié)約網(wǎng)絡(luò)資源,提高爬蟲效率。
需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
根據(jù)本申請(qǐng)實(shí)施例的另一方面,提供了一種論壇目錄頁內(nèi)容解析裝置,該論壇目錄頁內(nèi)容解析裝置可以用于執(zhí)行本申請(qǐng)實(shí)施例的論壇目錄頁內(nèi)容解析方法,本申請(qǐng)實(shí)施例的論壇目錄頁內(nèi)容解析方法也可以通過本申請(qǐng)實(shí)施例的論壇目錄頁內(nèi)容解析裝置 來執(zhí)行。
圖2是根據(jù)本申請(qǐng)實(shí)施例的論壇目錄頁內(nèi)容解析裝置的示意圖,如圖2所示,該裝置包括:爬取單元10、第一解析單元20、判斷單元30和第二解析單元40。
爬取單元10,用于按照預(yù)設(shè)排序規(guī)則爬取論壇目錄頁中的文章,得到爬取結(jié)果,其中,預(yù)設(shè)排序規(guī)則用于使論壇目錄頁中的文章按照發(fā)表時(shí)間排序。
可選地,爬取單元10包括:獲取模塊,用于獲取論壇目錄頁的鏈接;構(gòu)建模塊,用于根據(jù)論壇目錄頁的鏈接按照預(yù)設(shè)排序規(guī)則構(gòu)建爬取請(qǐng)求,其中,根據(jù)爬取請(qǐng)求從服務(wù)器獲取到的論壇目錄頁中的文章按照發(fā)表時(shí)間排序;以及第一爬取模塊,用于根據(jù)爬取請(qǐng)求爬取論壇目錄頁中的文章,得到爬取結(jié)果。
第一解析單元20,用于按照預(yù)設(shè)順序依次解析爬取結(jié)果中的文章。
判斷單元30,用于判斷當(dāng)前解析的文章的發(fā)表時(shí)間是否晚于預(yù)設(shè)時(shí)間。
可選地,判斷單元30包括:解析模塊,用于通過預(yù)設(shè)算法從當(dāng)前解析的文章中解析出發(fā)表時(shí)間;以及判斷模塊,用于判斷發(fā)表時(shí)間是否晚于預(yù)設(shè)時(shí)間。
第二解析單元40,用于在判斷出當(dāng)前解析的文章的發(fā)表時(shí)間晚于預(yù)設(shè)時(shí)間時(shí),繼續(xù)解析爬取結(jié)果中的文章,在判斷出當(dāng)前解析的文章的發(fā)表時(shí)間不晚于預(yù)設(shè)時(shí)間時(shí),停止解析爬取結(jié)果中的文章。
本申請(qǐng)實(shí)施例通過第一解析單元20按照預(yù)設(shè)排序規(guī)則爬取論壇目錄頁中的文章,得到爬取結(jié)果,其中,預(yù)設(shè)排序規(guī)則用于使論壇目錄頁中的文章按照發(fā)表時(shí)間排序;按照預(yù)設(shè)順序依次解析爬取結(jié)果中的文章;判斷單元30判斷當(dāng)前解析的文章的發(fā)表時(shí)間是否晚于預(yù)設(shè)時(shí)間;以及第二解析單元40在判斷出當(dāng)前解析的文章的發(fā)表時(shí)間晚于預(yù)設(shè)時(shí)間時(shí),繼續(xù)解析爬取結(jié)果中的文章,在判斷出當(dāng)前解析的文章的發(fā)表時(shí)間不晚于預(yù)設(shè)時(shí)間時(shí),停止解析爬取結(jié)果中的文章,在本申請(qǐng)實(shí)施例中根據(jù)預(yù)設(shè)排序規(guī)則爬取到的論壇目錄頁中的文章是按照發(fā)表時(shí)間排序的,因此一旦判斷出爬取結(jié)果中某篇文章的發(fā)表時(shí)間早于預(yù)設(shè)時(shí)間,則無需繼續(xù)解析爬取結(jié)果中該篇文章之后的文章,降低了本地解析對(duì)資源的占用,提高了本地解析爬取到的論壇目錄頁內(nèi)容的效率,解決了相關(guān)技術(shù)中解析爬取到的論壇目錄頁內(nèi)容時(shí)浪費(fèi)資源的問題,進(jìn)而達(dá)到了降低本地解析爬取到的論壇目錄頁內(nèi)容時(shí)對(duì)資源的占用以及提高解析爬取到的論壇目錄頁內(nèi)容的效率的效果。
可選地,該裝置還包括:第三解析單元,用于解析當(dāng)前解析的文章的鏈接;以及添加單元,用于將當(dāng)前解析的文章的鏈接添加至爬取隊(duì)列中。
可選地,論壇目錄頁包括多個(gè)爬取頁面,第一爬取頁面為多個(gè)爬取頁面中任意一 個(gè)爬取頁面,爬取單元10包括:第二爬取模塊,用于按照預(yù)設(shè)排序規(guī)則爬取論壇目錄頁的第一爬取頁面中的文章,得到爬取結(jié)果,該裝置還包括:停止單元,用于停止爬取位于第一爬取頁面之后的爬取頁面中的文章。
所述論壇目錄頁內(nèi)容解析裝置包括處理器和存儲(chǔ)器,上述爬取單元、第一解析單元、判斷單元和第二解析單元等均作為程序單元存儲(chǔ)在存儲(chǔ)器中,由處理器執(zhí)行存儲(chǔ)在存儲(chǔ)器中的上述程序單元來實(shí)現(xiàn)相應(yīng)的功能。
處理器中包含內(nèi)核,由內(nèi)核去存儲(chǔ)器中調(diào)取相應(yīng)的程序單元。內(nèi)核可以設(shè)置一個(gè)或以上,通過調(diào)整內(nèi)核參數(shù)來解析論壇目錄頁中的內(nèi)容。
存儲(chǔ)器可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(rom)或閃存(flashram),存儲(chǔ)器包括至少一個(gè)存儲(chǔ)芯片。
本申請(qǐng)還提供了一種計(jì)算機(jī)程序產(chǎn)品,當(dāng)在數(shù)據(jù)處理設(shè)備上執(zhí)行時(shí),適于執(zhí)行初始化有如下方法步驟的程序代碼:按照預(yù)設(shè)排序規(guī)則爬取論壇目錄頁中的文章,得到爬取結(jié)果,其中,預(yù)設(shè)排序規(guī)則用于使論壇目錄頁中的文章按照發(fā)表時(shí)間排序;按照預(yù)設(shè)順序依次解析爬取結(jié)果中的文章;判斷當(dāng)前解析的文章的發(fā)表時(shí)間是否晚于預(yù)設(shè)時(shí)間;在判斷出當(dāng)前解析的文章的發(fā)表時(shí)間晚于預(yù)設(shè)時(shí)間時(shí),繼續(xù)解析爬取結(jié)果中的文章;以及在判斷出當(dāng)前解析的文章的發(fā)表時(shí)間不晚于預(yù)設(shè)時(shí)間時(shí),停止解析爬取結(jié)果中的文章。
上述本申請(qǐng)實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
在本申請(qǐng)的上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。
在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的技術(shù)內(nèi)容,可通過其它的方式實(shí)現(xiàn)。其中,以上所描述的裝置實(shí)施例僅僅是示意性的,例如所述單元的劃分,可以為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本申請(qǐng)各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本申請(qǐng)的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可為個(gè)人計(jì)算機(jī)、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請(qǐng)各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:u盤、只讀存儲(chǔ)器(rom,read-onlymemory)、隨機(jī)存取存儲(chǔ)器(ram,randomaccessmemory)、移動(dòng)硬盤、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
以上所述僅是本申請(qǐng)的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本申請(qǐng)?jiān)淼那疤嵯拢€可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本申請(qǐng)的保護(hù)范圍。