專利名稱::網(wǎng)頁數(shù)據(jù)抓取過濾方法
技術(shù)領(lǐng)域:
:本發(fā)明屬于計(jì)算機(jī)數(shù)據(jù)庫
技術(shù)領(lǐng)域:
,尤其涉及一種網(wǎng)頁數(shù)據(jù)抓取過濾方法。
背景技術(shù):
:網(wǎng)頁抓取和數(shù)據(jù)抽取技術(shù)有很悠久的發(fā)展歷史,通過各種技術(shù)手段實(shí)現(xiàn)網(wǎng)頁內(nèi)容的采集目的,而且,在每個(gè)計(jì)算技術(shù)發(fā)展階段,人們都在嘗試使用更先進(jìn)的技術(shù)和編程語言實(shí)現(xiàn)更強(qiáng)大的網(wǎng)站內(nèi)容采集工具,現(xiàn)有常見的網(wǎng)頁數(shù)據(jù)抓取方法如下1、使用網(wǎng)絡(luò)爬蟲技術(shù)實(shí)現(xiàn)網(wǎng)頁抓取和數(shù)據(jù)抽取的方法網(wǎng)絡(luò)爬蟲即WebSpider,是一個(gè)很形象的名字。把互聯(lián)網(wǎng)比喻成一個(gè)蜘蛛網(wǎng),那么Spider就是在網(wǎng)上爬來爬去的蜘蛛。網(wǎng)絡(luò)蜘蛛是通過網(wǎng)頁的鏈接地址來尋找網(wǎng)頁,從網(wǎng)站某一個(gè)頁面(通常是首頁)開始,讀取網(wǎng)頁的內(nèi)容,找到在網(wǎng)頁中的其它鏈接地址,然后通過這些鏈接地址尋找下一個(gè)網(wǎng)頁,這樣一直循環(huán)下去,直到把這個(gè)網(wǎng)站所有的網(wǎng)頁都抓取完為止。如果把整個(gè)互聯(lián)網(wǎng)當(dāng)成一個(gè)網(wǎng)站,那么網(wǎng)絡(luò)蜘蛛就可以用這個(gè)原理把互聯(lián)網(wǎng)上所有的網(wǎng)頁都抓取下來。對于搜索引擎來說,要抓取互聯(lián)網(wǎng)上所有的網(wǎng)頁幾乎是不可能的,從目前公布的數(shù)據(jù)來看,容量最大的搜索引擎也不過是抓取了整個(gè)網(wǎng)頁數(shù)量的百分之四十左右。這其中的原因一方面是抓取技術(shù)的瓶頸,無法遍歷所有的網(wǎng)頁,有許多網(wǎng)頁無法從其它網(wǎng)頁的鏈接中找到;另一個(gè)原因是存儲技術(shù)和處理技術(shù)的問題,如果按照每個(gè)頁面的平均大小為20K計(jì)算(包含圖片),100億網(wǎng)頁的容量是100X2000G字節(jié),即使能夠存儲,下載也存在問題(按照一臺機(jī)器每秒下載20K計(jì)算,需要340臺機(jī)器不停的下載一年時(shí)間,才能把所有網(wǎng)頁下載完畢)。同時(shí),由于數(shù)據(jù)量太大,在提供搜索時(shí)也會有效率方面的影響。因此,許多搜索引擎的網(wǎng)絡(luò)蜘蛛只是抓取那些重要的網(wǎng)頁,而在抓取的時(shí)候評價(jià)重要性主要的依據(jù)是某個(gè)網(wǎng)頁的鏈接深度。在抓取網(wǎng)頁的時(shí)候,網(wǎng)絡(luò)蜘蛛一般有兩種策略廣度優(yōu)先和深度優(yōu)先。廣度優(yōu)先是指網(wǎng)絡(luò)蜘蛛會先抓取起始網(wǎng)頁中鏈接的所有網(wǎng)頁,然后再選擇其中的一個(gè)鏈接網(wǎng)頁,繼續(xù)抓取在此網(wǎng)頁中鏈接的所有網(wǎng)頁。這是最常用的方式,因?yàn)檫@個(gè)方法可以讓網(wǎng)絡(luò)蜘蛛并行處理,提高其抓取速度。深度優(yōu)先是指網(wǎng)絡(luò)蜘蛛會從起始頁開始,每個(gè)鏈接跟蹤下去,處理完這條線路之后再轉(zhuǎn)入下一個(gè)起始頁,繼續(xù)跟蹤鏈接。這個(gè)方法有個(gè)優(yōu)點(diǎn)是網(wǎng)絡(luò)蜘蛛在設(shè)計(jì)的時(shí)候比較容易。由于不可能抓取所有的網(wǎng)頁,有些網(wǎng)絡(luò)蜘蛛對一些不太重要的網(wǎng)站,設(shè)置了訪問的層數(shù)。例如,一個(gè)網(wǎng)站中A為起始網(wǎng)頁,屬于0層,B、C、D、E、F屬于第1層,G、H屬于第2層,I屬于第3層。如果網(wǎng)絡(luò)蜘蛛設(shè)置的訪問層數(shù)為2的話,網(wǎng)頁I是不會被訪問到的。這也讓有些網(wǎng)站上一部分網(wǎng)頁能夠在搜索引擎上搜索到,另外一部分不能被搜索到。對于網(wǎng)站設(shè)計(jì)者來說,扁平化的網(wǎng)站結(jié)構(gòu)設(shè)計(jì)有助于搜索引擎抓取其更多的網(wǎng)頁。網(wǎng)絡(luò)蜘蛛在訪問網(wǎng)站網(wǎng)頁的時(shí)候,經(jīng)常會遇到加密數(shù)據(jù)和網(wǎng)頁權(quán)限的問題,有些網(wǎng)頁是需要會員權(quán)限才能訪問。當(dāng)然,網(wǎng)站的所有者可以通過協(xié)議讓網(wǎng)絡(luò)蜘蛛不去抓取,但對于一些網(wǎng)站,他們希望搜索引擎能搜索到他們的內(nèi)容,但又不能完全免費(fèi)的讓搜索者查看,這樣就需要給網(wǎng)絡(luò)蜘蛛提供相應(yīng)的用戶名和密碼。網(wǎng)絡(luò)蜘蛛可以通過所給的權(quán)限對這些網(wǎng)頁進(jìn)行網(wǎng)頁抓取,從而提供搜索。而當(dāng)搜索者點(diǎn)擊查看該網(wǎng)頁的時(shí)候,同樣需要搜索者提供相應(yīng)的權(quán)限驗(yàn)證。2、使用微軟技術(shù)實(shí)現(xiàn)網(wǎng)站內(nèi)容抓取和數(shù)據(jù)抽取的方法如asp.net網(wǎng)頁抓取的方法;傳統(tǒng)ASP網(wǎng)頁抓取數(shù)據(jù)的一般方法;kreenScrapinginC#即使用C#填寫R)rm表達(dá),post后抓取網(wǎng)頁的方法。3、使用Java技術(shù)實(shí)現(xiàn)網(wǎng)站內(nèi)容抓取和數(shù)據(jù)抽取的方法如使用Nutch的兩種Htmlparser工具(NekoHTML和TagSoup)實(shí)現(xiàn)html的提取的方法JSP實(shí)現(xiàn)網(wǎng)頁抓取的方法;使用Java實(shí)現(xiàn)批量提取網(wǎng)頁數(shù)據(jù)的的方法,沒有采用正則表達(dá)式方法,而是基于DOM的方法。4、使用PHP技術(shù)實(shí)現(xiàn)網(wǎng)站內(nèi)容抓取和數(shù)據(jù)抽取的方法5、使用Delphi技術(shù)實(shí)現(xiàn)網(wǎng)站內(nèi)容抓取和數(shù)據(jù)抽取的方法如用Delphi7和hdy的TidHttp控件實(shí)現(xiàn)網(wǎng)站內(nèi)容抓取和數(shù)據(jù)抽取。6、使用Python技術(shù)實(shí)現(xiàn)網(wǎng)站內(nèi)容抓取和數(shù)據(jù)抽取的方法如使用有名的BeautifulSoup庫解析HTML文檔,還使用了urlliM庫抓取網(wǎng)頁,使用mechanize庫模仿瀏覽器行為;使用Web應(yīng)用自動(dòng)測試程序Jelenium和Windmill提起JavaScript代碼管理的內(nèi)容。7、使用Flex技術(shù)實(shí)現(xiàn)網(wǎng)站內(nèi)容抓取和數(shù)據(jù)抽取的方法如通過代理方式,或者編寫服務(wù)器Actior^cript腳本程序繞開域安全策略,實(shí)現(xiàn)AdobeFlex開發(fā)網(wǎng)頁抓取和網(wǎng)站內(nèi)容數(shù)據(jù)抽取程序。8、使用Javascript實(shí)現(xiàn)網(wǎng)頁抓取和數(shù)據(jù)抽取的方法9、使用Ruby實(shí)現(xiàn)網(wǎng)頁抓取和數(shù)據(jù)抽取的方法對于一般的網(wǎng)頁數(shù)據(jù)抓取,通過上述方法都能實(shí)現(xiàn)。通過對網(wǎng)頁上面的信息過濾得到需要的信息(比如BBS需要抓取文章標(biāo)題,作者,發(fā)帖時(shí)間,點(diǎn)擊量,回復(fù)量等信息),如根據(jù)網(wǎng)頁中Html語言標(biāo)簽的規(guī)律制作過濾用的正則表達(dá)式,從而可以精確過濾出以上信息,但是當(dāng)需要抓取的面非常之廣,如覆蓋近80000個(gè)論壇,200多個(gè)大型新聞網(wǎng)站來說,此外還有不少知名的搜索引擎、博客、貼吧等網(wǎng)站,所以日數(shù)據(jù)更新量非常之龐大,不可能去為每一個(gè)BBS,每一個(gè)網(wǎng)站的每一個(gè)板塊獨(dú)立制作一套量身定制的過濾程序,即使不惜工本的制作出來,隨著大量網(wǎng)站不停的改版,抓取程序也必須隨之做精確的改動(dòng),這種維護(hù)工作量,這種更新速度顯然是不現(xiàn)實(shí)的。由此可見,通?,F(xiàn)有一般方法制作的抓取程序,實(shí)現(xiàn)精確過濾數(shù)據(jù)抓取的方式,只能針對個(gè)別網(wǎng)站或者較少數(shù)量網(wǎng)站進(jìn)行數(shù)據(jù)抓取,考慮到過多的數(shù)據(jù)匹配程序的制作和維護(hù),無法對未知的海量網(wǎng)站進(jìn)行抓取,因此有必要提供新的網(wǎng)頁數(shù)據(jù)抓取過濾方法。
發(fā)明內(nèi)容本發(fā)明所要解決的技術(shù)問題是提供一種網(wǎng)頁數(shù)據(jù)抓取過濾方法,可以實(shí)現(xiàn)快速、較準(zhǔn)確的對海量網(wǎng)站進(jìn)行數(shù)據(jù)抓取及過濾。本發(fā)明為解決上述技術(shù)問題而采用的技術(shù)方案是提供一種網(wǎng)頁數(shù)據(jù)抓取過濾方法,包括如下步驟a)獲取網(wǎng)頁Html代碼;b)將Html轉(zhuǎn)化為XML序列表;c)對XML序列表利用信息關(guān)鍵詞進(jìn)行模糊匹配獲取網(wǎng)頁數(shù)據(jù)。上述的網(wǎng)頁數(shù)據(jù)抓取過濾方法,其中,所述步驟a)使用C#.NET中的WebClient來讀取某一網(wǎng)站的全部Html代碼。上述的網(wǎng)頁數(shù)據(jù)抓取過濾方法,其中,所述步驟b)將Html轉(zhuǎn)化為XML序列表包括如下步驟刪除網(wǎng)頁腳本程序;刪除網(wǎng)頁HTML中常規(guī)無關(guān)項(xiàng);再把網(wǎng)頁Html全部標(biāo)簽化,并將Html中所有標(biāo)簽全部閉合;最后使用微軟的XML序列化方法,使整個(gè)Html代碼XML序列化,生成XML文件。上述的網(wǎng)頁數(shù)據(jù)抓取過濾方法,其中,所述網(wǎng)頁腳本程序?yàn)樗小碨criptX/Script)之間的網(wǎng)頁腳本程序,包括Javakript或VBkript程序。上述的網(wǎng)頁數(shù)據(jù)抓取過濾方法,其中,所述網(wǎng)頁HTML中常規(guī)無關(guān)項(xiàng)包括網(wǎng)頁標(biāo)題或網(wǎng)頁描述。上述的網(wǎng)頁數(shù)據(jù)抓取過濾方法,其中,所述步驟c)中的網(wǎng)頁數(shù)據(jù)為BBS列表,獲取過程包括如下步驟獲取XML文件中表格節(jié)點(diǎn)的子節(jié)點(diǎn)數(shù)量;刪除所有存在子表格的外層表格代碼,留下最內(nèi)層表格;刪除所有行數(shù)小于5,且列數(shù)小于5的表格;利用正則表達(dá)式搜索匹配BBS文章中的關(guān)鍵詞。上述的網(wǎng)頁數(shù)據(jù)抓取過濾方法,其中,所述信息關(guān)鍵詞包括“標(biāo)題”、“作者”、“點(diǎn)擊量/回復(fù)量”、“發(fā)帖時(shí)間”、“回復(fù)時(shí)間”。上述的網(wǎng)頁數(shù)據(jù)抓取過濾方法,其中,所述關(guān)鍵詞的判斷順序如下先判斷“發(fā)帖時(shí)間”或“回復(fù)時(shí)間”的列;接著判斷“點(diǎn)擊量/回復(fù)量”的列;最后判斷“標(biāo)題”和“作者”的列。上述的網(wǎng)頁數(shù)據(jù)抓取過濾方法,其中,所述“標(biāo)題”和“作者”根據(jù)以下方法綜合判斷a.“標(biāo)題”在“作者”的左邊;b.“標(biāo)題”的文字長度大于“作者”名字的長度;c.“標(biāo)題”位于表格的前1,2,3列,“作者”緊貼“標(biāo)題”的右側(cè)列。上述的網(wǎng)頁數(shù)據(jù)抓取過濾方法,其中,所述“發(fā)帖時(shí)間”和“回復(fù)時(shí)間”根據(jù)以下方法判斷使用正則表達(dá)式匹配的方法,去匹配包含各種中文日期、中文時(shí)間、英文日期、英文時(shí)間、或者阿拉伯?dāng)?shù)字加中文字混合的常規(guī)的日期時(shí)間表達(dá)方式;如發(fā)現(xiàn)一列內(nèi)容中包含2個(gè)日期或時(shí)間的,或者用“/”符號隔開的,則判斷日期或時(shí)間小的那個(gè)是“發(fā)帖時(shí)間”,而日期或時(shí)間大的那個(gè)是最近“回復(fù)時(shí)間”;同樣,如果遇到有兩列都是日期時(shí)間的,則判斷日期時(shí)間小的是“發(fā)帖時(shí)間”、日期時(shí)間大的是“回復(fù)時(shí)間”。本發(fā)明對比現(xiàn)有技術(shù)有如下的有益效果本發(fā)明提供的網(wǎng)頁數(shù)據(jù)抓取過濾方法,通過先將Html全面XML序列化,再采用模糊過濾的方式獲取XML文件中的網(wǎng)頁數(shù)據(jù),特別是對網(wǎng)頁論壇,論壇文章列表基本上都是一個(gè)Html表格,其中一般都包含“文章標(biāo)題”,“作者”,“發(fā)帖時(shí)間”,“回復(fù)時(shí)間”,“點(diǎn)擊量”,“回復(fù)量”等主要信息關(guān)鍵詞,先將表格劃分為行和列,通過可能的多種日期呈現(xiàn)方式來模糊判定哪一列是日期,同理判定那一列是作者,回帖數(shù),點(diǎn)擊量,回復(fù)量等,從而較為精確的過濾出想要的信息,通過這種Html模糊匹配過濾的方式能夠通過簡單的4,5套方法識別95%以上的論壇和一般性的新聞網(wǎng)站內(nèi)容,從而真正規(guī)避了海量網(wǎng)站匹配程序的制作和后期維護(hù)工作,實(shí)現(xiàn)快速、較準(zhǔn)確的對海量網(wǎng)站數(shù)據(jù)進(jìn)行數(shù)據(jù)抓取及過濾。圖1為本發(fā)明網(wǎng)頁數(shù)據(jù)抓取過濾方法流程示意圖;圖2為本發(fā)明將Html轉(zhuǎn)化為XML序列表流程示意圖;圖3為本發(fā)明獲取BBS文章中數(shù)據(jù)流程示意圖。具體實(shí)施例方式下面結(jié)合附圖和實(shí)施例對本發(fā)明作進(jìn)一步的描述。圖1為本發(fā)明網(wǎng)頁數(shù)據(jù)抓取過濾方法流程示意圖;圖2為本發(fā)明將Html轉(zhuǎn)化為XML序列表流程示意圖;圖3為本發(fā)明獲取BBS文章中數(shù)據(jù)流程示意圖。請參見圖1,下面以抓取BBS文章中網(wǎng)頁數(shù)據(jù)為例詳細(xì)說明本發(fā)明的實(shí)施過程步驟SlOl獲取網(wǎng)頁Html代碼先使用C#.NET中的WebClient的OpenRead(+URL)的方法,讀取某一論壇文章列表的全部Html代碼。步驟S102將Html全面XML序列化請繼續(xù)參見圖2,如步驟S201所示,首先把整體Html代碼中的基礎(chǔ)的無關(guān)代碼統(tǒng)統(tǒng)刪除,例如刪除代碼中的所有<ScriptX/^cript>之間的網(wǎng)頁腳本程序,包括JavMcript或者VBkript程序等,因?yàn)槟_本程序無法被XML解析,且肯定和所需的論壇內(nèi)容無關(guān)。如步驟S202所示,再把網(wǎng)頁HTML中常規(guī)無關(guān)項(xiàng)刪除,比如網(wǎng)頁標(biāo)題(<title></title〉),網(wǎng)頁關(guān)鍵i司(Keywords,艮口在<metaname="keywords"content="“/>中的內(nèi)容,此處的關(guān)鍵詞不是如BBS列表文章中的信息關(guān)鍵詞,如“標(biāo)題”、“作者”、“點(diǎn)擊量/回復(fù)量”、“發(fā)帖時(shí)間”、“回復(fù)時(shí)間”),網(wǎng)頁描述(description即在^etaname=〃description〃content="“/>中的內(nèi)容)等,這樣可以盡量減少代碼的體積,增加過濾速度。如步驟S203所示,再把網(wǎng)頁Html全部標(biāo)簽化,使Html中全部不閉合的標(biāo)簽,全部閉合(例如“換行”在Html里面是“<br>”,讓它閉合的話,就要全部替換成“<br></br>”,<IMG>全部閉合成“〈IMGX/IMG〉”等),因?yàn)閄ML只認(rèn)識閉合的標(biāo)簽,不閉合的標(biāo)簽如果存在的話,整個(gè)Html無法被XML序列化。接下來,如步驟S204所示,使用微軟的XML序列化方法,使整個(gè)Html代碼XML序列化,生成XML文件,至此XML序列化完成,XML序列化的目的是為了更好的使用XML節(jié)點(diǎn)管理方便的屬性,方便的對XML各節(jié)點(diǎn)信息進(jìn)行判斷和提取。步驟S103對XML序列表利用信息關(guān)鍵詞進(jìn)行模糊匹配獲取網(wǎng)頁數(shù)據(jù)。對于需要的BBS列表的內(nèi)容進(jìn)行模糊的合理性程序判斷,利用層層遞進(jìn)的方式,最終找到需要的內(nèi)容。請繼續(xù)參見圖3,如步驟S301所示,首先在絕大多數(shù)情況下,一張Html的網(wǎng)頁里面都具有很多表格〈tableX/table〉,并且大多數(shù)情況下表格和表格都是相互嵌套的(即很多層表格,大表格里面套小表格),而BBS文章列表的內(nèi)容肯定是顯示在最內(nèi)層的表格中,所以借助利用C#.NET的XML的Node.ChildNode.Count的方法,可以獲取XML文件中表格節(jié)點(diǎn)的子節(jié)點(diǎn)數(shù)量。如步驟S302所示,由此可以判斷那些表格存在子表格,哪些表格不存在子表格,再把那些存在子表格的外層表格代碼刪除,留下的就都是不存在子表格的最內(nèi)層表格。如步驟S303所示,絕大多數(shù)的BBS文章列表都是以〈tableX/table〉的方式存在的,同時(shí)BBS文章列表的列數(shù)一定>=5,因?yàn)橐粋€(gè)BBS列表最起碼要包含“文章標(biāo)題”“作者”“點(diǎn)擊量/回復(fù)量”“發(fā)帖時(shí)間”“回復(fù)時(shí)間”,而且保守的估計(jì),一張BBS列表的行數(shù)一般全部>5行(<5行也可能這個(gè)文章板塊內(nèi)的文章太少,也可以暫時(shí)不抓取,等到它內(nèi)容豐富起來再抓取),由此可以在XML文件中,把所有行數(shù)<5,且列數(shù)<5的表格全部刪除。如步驟S304所示,利用正則表達(dá)式匹配的方法,來判斷所剩下的表格中是否包含“文字Link”“各種可能的日期格式內(nèi)容”“正整數(shù)數(shù)字”的信息,如果有一張表格能同時(shí)匹配到以上內(nèi)容的話,則確定這張表格就是論壇文章表;找到論壇表格,并把其它的表格全部刪除,進(jìn)一步縮小XML體積。當(dāng)確定了論壇的文章列表之后,可以繼續(xù)模糊匹配和提取真正想要的詳細(xì)信息,如“文章標(biāo)題”“作者”“點(diǎn)擊量/回復(fù)量”“發(fā)帖時(shí)間”“回復(fù)時(shí)間”等。首先,由于時(shí)間日期類型的變量最特殊,最好判斷,所以在表格中尋找哪一列是發(fā)帖或者最近的回帖日期,例如使用正則表達(dá)式匹配的方法,去匹配包含各種中文日期、中文時(shí)間、英文日期、英文時(shí)間或者阿拉伯?dāng)?shù)字加中文字混合的常規(guī)的日期時(shí)間表達(dá)方式。在此有可能發(fā)現(xiàn)一列內(nèi)容中包含2個(gè)日期或時(shí)間的,或者用“/”符號隔開的,就可以知道,日期時(shí)間小的那個(gè)是“發(fā)帖時(shí)間”,而日期時(shí)間大的那個(gè)必定是最近“回復(fù)時(shí)間”。同理,如果遇到有兩列都是日期時(shí)間的,也可以判斷哪一列是“發(fā)帖時(shí)間”、哪一列是“回復(fù)時(shí)間”了。在“發(fā)帖時(shí)間”和“回復(fù)時(shí)間”被確定之后,可以用相同的辦法去判斷“點(diǎn)擊量”和“回復(fù)量”的列(“點(diǎn)擊量”或“回復(fù)量”一定是包含正整數(shù)的列,數(shù)字大的一定是點(diǎn)擊量,數(shù)字小的一定是回復(fù)量)。其次,再判斷哪兩列是“文章標(biāo)題”和“作者”,一般來說“文章標(biāo)題”和“作者”一般都是代超鏈接的純文本,很難判斷,但是一般可以根據(jù)如下方法綜合判斷1)絕大多數(shù)BBS文章列表的文章“標(biāo)題”在“作者”的左邊;2)大多數(shù)BBS的文章“標(biāo)題”的文字長度要大于“作者”名字的長度;3)大多數(shù)BBS文章列表的“標(biāo)題”都是表格的前1,2,3列,而“作者”則一般都是緊貼標(biāo)題的右側(cè)列。這樣如果一個(gè)BBS列表中有50行數(shù)據(jù)樣本的話,一般就可以非常準(zhǔn)確的判斷哪一列是“標(biāo)題”,哪一列是“作者”了。最終通過這樣的模糊匹配的方式可以以很高的準(zhǔn)確度抓取到未知論壇板塊的文章信息,寫入SQL數(shù)據(jù)庫。對新聞網(wǎng)站、搜索引擎、博客、貼吧以及視頻網(wǎng)站的抓取,同樣先將Html全面XML序列化,再采用模糊過濾的方式獲取XML文件中的網(wǎng)頁數(shù)據(jù),在此不再一一贅述。本發(fā)明提供的網(wǎng)頁數(shù)據(jù)抓取過濾方法,在輿情監(jiān)控系統(tǒng)中實(shí)施如下月艮務(wù)器1CPUXeon5606,內(nèi)存DDR3REGMGB,硬盤600GBSAS+ITBSATA;服務(wù)器2:CPUIntel132130內(nèi)存16GB硬盤ITBSATA;兩臺機(jī)器皆為低成本的X86機(jī)架式服務(wù)器,放置于中國電信機(jī)房托管,機(jī)柜共享100M。服務(wù)器1為主服務(wù)器,負(fù)責(zé)80000個(gè)論壇的數(shù)據(jù)抓取和分析,整個(gè)系統(tǒng)的所有數(shù)據(jù),同時(shí)還運(yùn)行整個(gè)項(xiàng)目數(shù)據(jù)管理及分析平臺供公司內(nèi)部使用。服務(wù)器2為輔助服務(wù)器,主要負(fù)責(zé)200個(gè)新聞網(wǎng)站、幾個(gè)主要搜索引擎、博客、貼吧、視頻網(wǎng)站的數(shù)據(jù)抓取及過濾,并將過濾出的可靠數(shù)據(jù)寫入服務(wù)器1的數(shù)據(jù)庫中。MicrosoftWindowsServerwindowsserver2003以上);需要Microsoft.NETFramework3.5SPl;需要Ajax.NET2.0擴(kuò)展支持;需要MicrosoftSQLServer2005/2008支持。實(shí)施的方法本輿情監(jiān)控系統(tǒng)中包含兩個(gè)軟件系統(tǒng),一個(gè)是數(shù)據(jù)抓取程序,為一個(gè)普通的WindoWS32bit或64bitexe應(yīng)用程序,不需要安裝即可使用,另外一個(gè)是數(shù)據(jù)管理及分析平臺,也為常規(guī)的B/S結(jié)構(gòu)軟件,所以其安裝方式同普通B/S系統(tǒng)完全相同。目前運(yùn)行狀況30000個(gè)重點(diǎn)論壇3-4小時(shí)可以抓取及過濾一次,80000個(gè)全部可以在10小時(shí)內(nèi)抓取過濾一次,剩余200個(gè)新聞網(wǎng)站、幾個(gè)主要搜索引擎、博客、貼吧、視頻網(wǎng)站可以在12個(gè)小時(shí)內(nèi)抓取過濾一次,已基本滿足實(shí)際使用需求。綜上所述,本發(fā)明提供的網(wǎng)頁數(shù)據(jù)抓取過濾方法通過先將Html全面XML序列化,再采用模糊過濾的方式獲取XML文件中的網(wǎng)頁數(shù)據(jù),從而實(shí)現(xiàn)快速、較準(zhǔn)確的對海量網(wǎng)站數(shù)據(jù)進(jìn)行抓取及過濾,這種Html模糊匹配過濾的方式能夠通過簡單的4、5套方法識別95%以上的論壇,和一般性的新聞網(wǎng)站內(nèi)容,從而真正規(guī)避了海量網(wǎng)站匹配程序的制作和后期維護(hù)工作。雖然本發(fā)明已以較佳實(shí)施例揭示如上,然其并非用以限定本發(fā)明,任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作些許的修改和完善,因此本發(fā)明的保護(hù)范圍當(dāng)以權(quán)利要求書所界定的為準(zhǔn)。權(quán)利要求1.一種網(wǎng)頁數(shù)據(jù)抓取過濾方法,其特征在于,包括如下步驟a)獲取網(wǎng)頁Html代碼;b)將Html轉(zhuǎn)化為XML序列表;c)對XML序列表利用信息關(guān)鍵詞進(jìn)行模糊匹配獲取網(wǎng)頁數(shù)據(jù)。2.如權(quán)利要求1所述的網(wǎng)頁數(shù)據(jù)抓取過濾方法,其特征在于,所述步驟a)使用C#.NET中的WebClient來讀取某一網(wǎng)站的全部Html代碼。3.如權(quán)利要求1所述的網(wǎng)頁數(shù)據(jù)抓取過濾方法,其特征在于,所述步驟b)將Html轉(zhuǎn)化為XML序列表包括如下步驟刪除網(wǎng)頁腳本程序;刪除網(wǎng)頁HTML中常規(guī)無關(guān)項(xiàng);再把網(wǎng)頁Html全部標(biāo)簽化,并將Html中所有標(biāo)簽全部閉合;最后使用微軟的XML序列化方法,使整個(gè)Html代碼XML序列化,生成XML文件。4.如權(quán)利要求3所述的網(wǎng)頁數(shù)據(jù)抓取過濾方法,其特征在于,所述網(wǎng)頁腳本程序?yàn)樗?lt;ScriptX/^cript>之間的網(wǎng)頁腳本程序,包括Javakript或VBkript程序。5.如權(quán)利要求3所述的網(wǎng)頁數(shù)據(jù)抓取過濾方法,其特征在于,所述網(wǎng)頁HTML中常規(guī)無關(guān)項(xiàng)包括網(wǎng)頁標(biāo)題或網(wǎng)頁描述。6.如權(quán)利要求1所述的網(wǎng)頁數(shù)據(jù)抓取過濾方法,其特征在于,所述步驟c)中的網(wǎng)頁數(shù)據(jù)為BBS列表,獲取過程包括如下步驟獲取XML文件中表格節(jié)點(diǎn)的子節(jié)點(diǎn)數(shù)量;刪除所有存在子表格的外層表格代碼,留下最內(nèi)層表格;刪除所有行數(shù)小于5,且列數(shù)小于5的表格;利用正則表達(dá)式搜索匹配BBS文章中的信息關(guān)鍵詞。7.如權(quán)利要求6所述的網(wǎng)頁數(shù)據(jù)抓取過濾方法,其特征在于,所述信息關(guān)鍵詞包括“標(biāo)題”、“作者”、“點(diǎn)擊量/回復(fù)量”、“發(fā)帖時(shí)間”、“回復(fù)時(shí)間”。8.如權(quán)利要求7所述的網(wǎng)頁數(shù)據(jù)抓取過濾方法,其特征在于,所述信息關(guān)鍵詞的判斷順序如下先判斷“發(fā)帖時(shí)間”或“回復(fù)時(shí)間”的列;接著判斷“點(diǎn)擊量/回復(fù)量”的列;最后判斷“標(biāo)題”和“作者”的列。9.如權(quán)利要求8所述的網(wǎng)頁數(shù)據(jù)抓取過濾方法,其特征在于,所述“標(biāo)題”和“作者”根據(jù)以下方法綜合判斷a.“標(biāo)題”在“作者”的左邊;b.“標(biāo)題”的文字長度大于“作者”名字的長度;c.“標(biāo)題”位于表格的前1,2,3列,“作者”緊貼“標(biāo)題”的右側(cè)列。10.如權(quán)利要求8所述的網(wǎng)頁數(shù)據(jù)抓取過濾方法,其特征在于,所述“發(fā)帖時(shí)間”和“回復(fù)時(shí)間”根據(jù)以下方法判斷使用正則表達(dá)式匹配的方法,去匹配包含各種中文日期、中文時(shí)間、英文日期、英文時(shí)間、或者阿拉伯?dāng)?shù)字加中文字混合的常規(guī)的日期時(shí)間表達(dá)方式;如發(fā)現(xiàn)一列內(nèi)容中包含2個(gè)日期或時(shí)間的,或者用“/”符號隔開的,則判斷日期或時(shí)間小的那個(gè)是“發(fā)帖時(shí)間”,而日期或時(shí)間大的那個(gè)是最近“回復(fù)時(shí)間”;同樣,如果遇到有兩列都是日期時(shí)間的,則判斷日期時(shí)間小的是“發(fā)帖時(shí)間”、日期時(shí)間大的是“回復(fù)時(shí)間”。全文摘要本發(fā)明公開了一種網(wǎng)頁數(shù)據(jù)抓取過濾方法,包括如下步驟a)獲取網(wǎng)頁Html代碼;b)將Html轉(zhuǎn)化為XML序列表;c)對XML序列表利用信息關(guān)鍵詞進(jìn)行模糊匹配獲取網(wǎng)頁數(shù)據(jù)。本發(fā)明提供的網(wǎng)頁數(shù)據(jù)抓取過濾方法,通過先將Html全面XML序列化,再采用模糊過濾的方式獲取XML文件中的網(wǎng)頁數(shù)據(jù),從而實(shí)現(xiàn)快速、較準(zhǔn)確的對海量網(wǎng)站數(shù)據(jù)進(jìn)行抓取及過濾。文檔編號G06F17/30GK102567521SQ20111044805公開日2012年7月11日申請日期2011年12月29日優(yōu)先權(quán)日2011年12月29日發(fā)明者金煒杰申請人:維構(gòu)(上海)文化傳媒有限公司