正文抽取演算法
Ⅰ 如何提取正文內容 BeautifulSoup的輸出
創建一個新網站,一開始沒有內容,通常需要抓取其他人的網頁內容,一般的操作步驟如下:
根據url下載網頁內容,針對每個網頁的html結構特徵,利用正則表達式,或者其他的方式,做文本解析,提取出想要的正文。
為每個網頁寫特徵分析這個還是太耗費開發的時間,我的思路是這樣的。
Python的BeautifulSoup包大家都知道吧,
import BeautifulSoup
soup = BeautifulSoup.BeautifulSoup(html)
利用這個包先把html里script,style給清理了:
[script.extract() for script in soup.findAll('script')]
[style.extract() for style in soup.findAll('style')]
清理完成後,這個包有一個prettify()函數,把代碼格式給搞的標准一些:
soup.prettify()
然後用正則表達式,把所有的HTML標簽全部清理了:
reg1 = re.compile("<[^>]*>")
content = reg1.sub('',soup.prettify())
剩下的都是純文本的文件了,通常是一行行的,把空白行給排除了,這樣就會知道總計有多少行,每行的字元數有多少,我用excel搞了一些每行字元數的統計,如下圖:
x坐標為行數,y坐標為該行的字元數
很明顯,會有一個峰值,81~91行就應該是這個網頁的正文部分。我只需要提取81~91行的文字就行了。
問題來了,照著這個思路,有什麼好的演算法能夠通過數據分析的方式統計出長文本的峰值在哪幾行?
BeautifulSoup不僅僅只是可以查找,定位和修改文檔內容,同樣也可以用一個好的 格式進行輸出顯示。BeautifulSoup可以處理不同類型的輸出:
Ⅱ 輿情監測系統招標參數
輿情監測系統介紹:
指通過對網路各類信息匯集、分類、整合、篩選等技術處理,再形成對網路熱點、動態、網民意見等實時統計報表的軟體工具。它利用互聯網信息採集技術和信息智能處理技術,通過對互聯網海量信息自動採集處理、敏感詞過濾、智能聚類分類、主題檢測、專題聚焦、統計分析,實現各單位對自己相關網路輿情監督管理的需要,最終形成輿情簡報、輿情專報、分析報告、移動快報,為決策層全面掌握輿情動態,做出正確輿論引導,提供分析依據。
主要架構是:
到底怎麼選擇還是要看你的需求,附上輿情監測系統的選擇一些注意點:
1、輿情監測系統監測的全面性。輿情軟體監測是否是全網監測;
2、監測的是否及時,輿情最注重的就是時效性,如果不能及時監測到,那麼輿情監測系統就失去了使用的意義,一般現在市面上的軟體監測事件均在半小時以內;
3、監測的准確性,與汽車企業相關的互聯網輿情僅僅一天的數據可能達到數十萬甚至是數百萬,但是可用的有效的輿情信息,卻只有一小部分。那麼這對於輿情監測系統的輿情分析能力就提出了比較高的要求。例如,之前我們單位使用過的西盈輿情監測系統可以在短短幾秒鍾對海量數據進行清洗,自動聚類、分類、自動研判信息屬性、過濾垃圾信息,並對有效的輿情信息進行精準的快速的推送,這些參數都是相當的重要。
經過輿情採集到的信息,經過輿情分析系統的知識庫系統和分析引擎系統 的分析可以自動分類聚類、自動研判信息屬性、自動進行信息的事件追蹤,不需要人工的介入,工作人員只需要根據分析得到的數據,尤其是自動導出的輿情報告進行決策。輿情爆發快,傳播迅速,因此出現負面輿情之後,第一時間處置,尤為重要。
所以說想要監測多少以及范圍多少都會影響價格,還有就是服務的質量也是比較重要的一個方面。
Ⅲ 計算機類論文怎麼寫
作為一個著重研究信息系統開發、應用的專業,計算機畢業論文的寫作應該更貼合實際出來,可能有很多剛拿到題目的學生不知道改如何著手,下面我們就來了解一下計算機畢業論文怎麼寫?
一、計算機畢業論文的寫作方法
1、前言部分
前言部分也常用"引論"、"概論"、"問題背景"等做標題,在這部分中,主要介紹論文的選題。
首先要闡明選題的背景和選題的意義。選題需強調實際背景,說明在計算機研究中或部門信息化建設、企業管理現代化等工作中引發該問題的原因,問題出現的環境和條件,解決該問題後能起什麼作用。結合問題背景的闡述,要使讀者感受到此選題確有實用價值和學術價值,因而有研究和開發的必要性。
前言部分常起到畫龍點睛的作用。選題實際又有新意,表明作者的研究方向正確,設計開發工作有價值。對一篇論文來說,前言寫好了,就會吸引讀者,使他們對作者的選題感興趣,願意進一步了解作者的工作成果。
2、綜述部分
任何一個課題的研究或開發都是有學科基礎或技術基礎的。綜述部分主要闡述選題在相應學科領域中的發展進程和研究方向,特別是近年來的發展趨勢和最新成果。通過與中外研究成果的比較和評論,說明自己的選題是符合當前的研究方向並有所進展,或採用了當前的最新技術並有所改進,目的是使讀者進一步了解選題的意義。
綜述部分能反映出畢業設計學生多方面的能力。首先是結合課題任務獨立查閱中外文獻資料的能力,通過查閱文獻資料,收集各種信息,了解同行的研究水平,在工作和論文中有效地運用文獻,這不僅能避免簡單的重復研究,而且也能使論文工作有一個高起點。
其次,還能反映出綜合分析的能力。從大量的文獻中找到可以借鑒和參考的信息,這不僅要有一定的專業知識水平,還要有一定的綜合能力。對同行研究成果是否能抓住要點,優缺點的評述是否符合實際,恰到好處,這和一個人的分析理解能力是有關的。
值得注意的是,要做好一篇畢業論文,必須閱讀一定量(2~3篇)的近期外文資料,這不僅反映自己的外文閱讀能力,而且有助於體現論文的先進性。
3、方案論證
在明確了所要解決的問題和課題綜述後,很自然地就要提出自己解決問題的思路和方案。在寫作方法上,一是要通過比較,顯示自己方案的價值,二是讓讀者了解方案的獨到之處或有創新點的思路、演算法和關鍵技術。
在與文獻資料中的方案進行比較時,首先要闡述自己的設計方案,說明為什麼要選擇或設計這樣的方案,前面評述的優點在此方案中如何體現,不足之處又是如何得到了克服,最後完成的工作能達到什麼性能水平,有什麼創新之處(或有新意)。如果自己的題目是總方案的一部分,一定要明確說明自己承擔的部分,以及對整個任務的貢獻。
4、論文主體
在這部分中,要將整個研究開發工作的內容,包括理論分析、總體設計、模塊劃分、實現方法等進行詳細的論述。論文主體部分要佔4/5左右。主體部分的寫法,視選題的不同可以多樣,研究型論文和應用開發型論文的寫法就有明顯的不同。
研究型的論文,主體部分一般應包括:理論基礎,數學模型,演算法推導,形式化描述,求解方法,軟硬體系統的實現及調試,測試數據的分析及結論。
要強調的是,研究型論文絕不是從推理到推理的空洞文章。研究型論文也應有實際背景,也應有到企業和實際部門調研的過程,並在實際調查研究中獲取信息,發現問題,收集數據和資料。在研究分析的基礎上,提出解決實際問題的、富有創建性的結論。
應用開發型的論文,主體部分應包括:總體設計,模塊劃分,演算法描述,編程模型,數據結構,實現技術,實例測試及性能分析。
以上內容根據任務所處的階段不同,可以有所側重。在整個任務初期的論文,可側重於研究與設計,在任務後期的論文可側重於實現與應用。但作為一篇完整的論文應讓讀者從課題的原理設計,問題的解決方法,關鍵技術以及性能測試都有全面的了解,以便能准確地評判論文的質量。
論文主體部分的內容一般要分成幾個章節來描述。在寫作上,除了用文字描述外,還要善於利用各種原理圖、流程圖、表格、曲線等來說明問題,一篇條理清晰,圖文並茂的論文才是一篇好的論文。
5、測試及性能分析
對理工專業的畢業設計論文,測試數據是性能評價的基礎,必須真實可靠。通過測試數據,論文工作的成效可一目瞭然。根據課題的要求,可以在實驗室環境下測試,也可以在工作現場測試。
在論文中,要將測試時的環境和條件列出,因為任何測試數據都與測試環境和條件相關,不說明測試條件的數據是不可比的,因此也是無意義的。
測試一般包括功能測試和性能測試。功能測試是將課題完成的計算機軟硬體系統(子系統)或應用系統所要求達到的功能逐一進行測試。性能測試一般是在系統(子系統)的運行狀態下,記錄實例運行的數據,然後,歸納和計算這些數據,以此來分析系統運行的性能。
測試實例可以自己設計編寫,也可以選擇學科領域內公認的、有一定權威性的測試實例或測試集。原則是通過所選擇(設計)的實例的運行,既能准確反映系統運行的功能和性能,與同類系統又有可比性。只有這樣,論文最後為自己工作所做的結論才有說服力。
6、結束語
這一節篇幅不大,首先對整個論文工作做一個簡單小結,然後將自己在研究開發工作中所做的貢獻,或獨立研究的成果列舉出來,再對自己工作的進展、水平做一個實事求是的評論。但在用"首次提出"、"重大突破"、"重要價值"等自我評語時要慎重。
7、後記
在後記中,主要表達對導師和其他有關教師和同學的感謝之意。對此,仍要實事求是,過分的頌揚反而會帶來消極影響。這一節也可用"致謝"做標題。
8、參考文獻
中外文的參考文獻應按照規范列舉在論文最後。這一部分的編寫反映作者的學術作風。編寫參考文獻要注意:(1)要嚴格按照規范編寫,特別是外文文獻,不要漏寫、錯寫;(2)論文內容和參考文獻要前後對應,正文中凡引用參考文獻的地方應加註;(3)列出的文獻資料應與論文課題相關,無關的文獻只會使讀者感到作者的研究目標很分散;(4)選擇的參考文獻應主要是近期的。
二、計算機寫作注意事項
1、設計(論文)題目:按照小題目。封面XXXXX學院畢業設計(論文)、 屆 分院(系)
2、摘要:不要主語,英文中無法表達時可用被動語態
3、關鍵詞:體現設計(論文)主要工作的詞語
4、目錄:自動生成,1.1.1的格式,最多到1.1.1.1 5、正文中文獻引用要客觀,別人的成果要說明,不要據為己有;自己的成果要突出。不清楚的圖必須修改(可用word畫或者AutoCAD畫),表格盡量採用三線表
6、參考文獻:至少要有兩篇英文文獻
7、致謝(不是致辭)
8、附錄(若多於一個附錄,可用附錄一、附錄二,……)
9、各部分格式要求,嚴格按照畢業設計手冊執行
三、計算機論文編輯技巧
1、文檔結構圖的妙用 格式修改時可先將全文設置為正文格式(新羅馬與宋體的博弈),然後將三級標題以上標題按照三級標題提出來,再將二級標題以上標題按照二級標題提出來,最後將一級標題提出來。提出標題時注意使用大綱級別。 提出大綱級別後,可用文檔結構圖輕松導航文檔。還可自動生成目錄(插入-引用-索引和目錄-目錄)。
2、圖的裁剪與組合(建議採用浮於文字上方的方式)、文本框的妙用、公式的編輯(變數用斜體、下標用的i、j、k用斜體,其餘用正體。公式中出現漢字怎麼辦?用拼音加加輸入法輸入漢字)
3、表格的編輯
4、上下標的使用(自定義word菜單)
5、分節符的使用
6、目錄自動生成(頁碼的問題),目錄可單獨取文件名(寫字板的運用),也可放到正文前面
7、樣式與格式的自動更新功能
8、頁眉設置(去掉橫線)
9、文檔的備份(防止病毒感染、U盤丟失、計算機故障)
Ⅳ 論文查重不能超過多少
目前大多數高校是用知網做最終的重復率檢測的。
對於知網查重的重復率要求,每所高校的要求都是有差別的,有的要求比較寬松的在20%-30%左右,甚至像一些工科類的論文,要求重復率在50%以內都算合格,而有的則要求比較嚴格,一般在5%-10%之內才算合格。建議注意學校的公告。
一般,畢業論文查重率合格標准:
專科論文≦30%~35%;
本科論文≦30%;(上交等部分985學校會要求到15%)
碩士論文≦10%~15%;(部分學校會放寬到30%)
博士論文≦5%。
為保險起見,建議大家在自己查重時參照以下數值:
本科生畢業論文<20%;
碩士研究生論文<10%;
博士研究生論文≦5%;
這段時間一直在寫畢業論文,最近論文剛剛寫了個初稿,准備先查重下後再修改。於是研究了下市面上的論文查重系統。
一、推薦查重系統:PaperPass官網
ww
w.pape
rpass.com/f/6ea5f9
推薦理由:過來人的經驗,一位博士學長讓我這樣查,我就這樣查了。
另外,從個人整個體驗過程下來,PaperPass還有幾方面的優勢:
1、有完整的查重報告
報告內容還是非常詳細的,包括重復率,相識度情況(紅色、橙色、綠色),與哪些文章重復等等這些信息都有,方便查重後修改。
4、PaperPass安全嗎?
因為之前朋友圈有傳,有同學通過淘寶查重,最後文章被淘寶賣家上傳文庫,導致最後學校查重時被認定為作弊。所以對於在淘寶上查重大家要謹慎。對於PaperPass的安全性,我不敢保證,但網上搜索了下,還沒有因為通過PaperPass官網查重導致上述問題出現的情況,二來有學長學姐經驗在,所以先放心使用吧~
最後再次送上Paperpass官網通道
ww
w.paperpa
ss.com/f/6ea5f9
Ⅳ 如何使用爬蟲做一個網站
做法:傳統爬蟲從一個或若干初始網頁的URL開始,獲得初始網頁上的URL,在抓取網頁的過程中,不斷從當前頁面上抽取新的URL放入隊列,直到滿足系統的一定停止條件。聚焦爬蟲的工作流程較為復雜,需要根據一定的網頁分析演算法過濾與主題無關的鏈接,保留有用的鏈接並將其放入等待抓取的URL隊列。
然後,它將根據一定的搜索策略從隊列中選擇下一步要抓取的網頁URL,並重復上述過程,直到達到系統的某一條件時停止。另外,所有被爬蟲抓取的網頁將會被系統存貯,進行一定的分析、過濾,並建立索引,以便之後的查詢和檢索;對於聚焦爬蟲來說,這一過程所得到的分析結果還可能對以後的抓取過程給出反饋和指導。
Ⅵ 自己動手寫網路爬蟲的作品目錄
電子書|自己動手寫網路爬蟲,免費下載
鏈接: https://pan..com/s/1VuP30TzuJLThBUaghwFXdA
《自己動手寫網路爬蟲》是2010年10月1日由清華大學出版社出版的圖書,作者是羅剛。本書在介紹基本原理的同時,注重輔以具體代碼實現來幫助讀者加深理解。
Ⅶ Web Spider網路蜘蛛,是什麼意思
[摘要]當「蜘蛛」程序出現時,現代意義上的搜索引擎才初露端倪。它實際上是一種電腦「機器人」(Computer Robot),電腦「機器人」是指某個能以人類無法達到的速度不間斷地執行某項任務的軟體程序。由於專門用於檢索信息的「機器人」程序就象蜘蛛一樣在網路間爬來爬去,反反復復,不知疲倦。所以,搜索引擎的「機器人」程序就被稱為「蜘蛛」程序。
關鍵詞:網路蜘蛛 起源 原理 優化
目錄
什麼是網路蜘蛛
網路蜘蛛的起源
網路蜘蛛的工作原理
正文開始
1、什麼是網路蜘蛛
----什麼是網路蜘蛛呢?網路蜘蛛即Web Spider,是一個很形象的名字。把互聯網比喻成一個蜘蛛網,那麼Spider就是在網上爬來爬去的蜘蛛。網路蜘蛛是通過網頁的鏈接地址來尋找網頁,從 網站某一個頁面(通常是首頁)開始,讀取網頁的內容,找到在網頁中的其它鏈接地址,然後通過這些鏈接地址尋找下一個網頁,這樣一直循環下去,直到把這個網 站所有的網頁都抓取完為止。如果把整個互聯網當成一個網站,那麼網路蜘蛛就可以用這個原理把互聯網上所有的網頁都抓取下來。
----這樣看來,網路蜘蛛就是一個爬行程序,一個抓取網頁的程序。
2、網路蜘蛛的起源
----要說網路蜘蛛的起源,我們還得從搜索引擎說起,什麼是搜索引擎呢?搜索引擎的起源是什麼,這和網路蜘蛛的起源密切相關。
----搜索引擎指自動從英特網搜集信息,經過一定整理以後,提供給用戶進行查詢的系統。英特網上的信息浩瀚萬千,而且毫無秩序,所有的信息象汪洋上的一個個小島,網頁鏈接是這些小島之間縱橫交錯的橋梁,而搜索引擎,則為你繪制一幅一目瞭然的信息地圖,供你隨時查閱。
----搜索引擎從1990年原型初顯,到現在成為人們生活中必不可少的一部分,它經歷了太多技術和觀念的變革。
----十四年前1994年的一月份,第一個既可搜索又可瀏覽的分類目錄EINetGalaxy上線了。在它之後才出現了雅虎,直至我們現在熟知的Google、網路。但是他們都不是第一個吃搜索引擎這個螃蟹的第一人。從搜索FTP上的文件開始,搜索引擎的原型就出現了,那時還未有萬維網,當時人們先用手工後用蜘蛛程序搜索網頁,但隨著互聯網的不斷壯大,怎樣能夠搜集到的網頁數量更多、時間更短成為了當時的難點和重點,成為人們研究的重點。
----搜索引擎原型初顯
----如果要追溯的話,搜索引擎的歷史比WorldWideWeb 還要長。早在Web出現之前,互聯網上就已經存在許多旨在讓人們共享的信息資源了。這些資源當時主要存在於各種允許匿名訪問的FTP 站點。為了便於人們在分散的FTP資源中找到所需的東西,1990年,加拿大麥吉爾大學(McGillUniversity)的幾個大學生開發了一個軟體Archie。它是一個可搜索的FTP文件名列表,用戶必須輸入精確的文件名搜索,然後Archie會告訴用戶哪一個FTP地址可以下載這個文件。Archie實際上是一個大型的資料庫,再加上與這個大型資料庫相關聯的一套檢索方法。Archie雖然還不是搜索引擎,但是從它的工作原理上看,它是所有搜索引擎的祖先。
----當萬維網(WorldWideWeb)出現後,人們可以通過 html傳播網頁信息,網路上的信息開始成倍增長。人們紛紛使用各種方法將網路上的信息搜集來,進行分類、整理,以方便查找。現在人們很熟悉的網站雅虎(Yahoo)就是在這個環境下誕生的。還在Stanford大學讀書的美籍華人楊致遠和他的同學迷上了互聯網。他們將互聯網上有趣的網頁搜集過來,與同學一起分享。後來,1994年4月,他們倆共同辦了雅虎。隨著訪問量和收錄鏈接數的增長,雅虎目錄開始支持簡單的資料庫搜索。但是因為雅虎的數據是手工輸入的,所以不能真正被歸為搜索引擎,事實上只是一個可搜索的目錄。
----當「蜘蛛」程序出現時,現代意義上的搜索引擎才初露端倪。它實際上是一種電腦「機器人」(Computer Robot),電腦「機器人」是指某個能以人類無法達到的速度不間斷地執行某項任務的軟體程序。由於專門用於檢索信息的「機器人」程序就象蜘蛛一樣在網路間爬來爬去,反反復復,不知疲倦。所以,搜索引擎的「機器人」程序就被稱為「蜘蛛」程序。
----這種程序實際是利用html文檔之間的鏈接關系,在Web上一個網頁一個網頁的爬取(crawl),將這些網頁抓到系統來進行分析,並放入資料庫中。第一個開發出「蜘蛛」程序的是Matthew Gray,他於1993年開發了World Wide Web Wanderer,它最初建立時是為了統計互聯網上的伺服器數量,到後來發展到能夠捕獲網址。現代搜索引擎的思路就來源於Wanderer,後來很多人在此基礎上對蜘蛛程序進行了改進。
----1994年7月20日發布的Lycos網站第一個將 「蜘蛛」程序接入到其索引程序中。引入「蜘蛛」後給其帶來的最大優勢就在於其遠勝於其它搜索引擎的數據量。自此之後幾乎所有占據主導地位的搜索引擎中,都靠「蜘蛛」來搜集網頁信息。Infoseek是另一個重要的搜索引擎,於1994年年底才與公眾見面。起初,Infoseek只是一個不起眼的搜索引擎,它沿襲Yahoo!和Lycos的概念,並沒有什麼獨特的革新。但是它友善的用戶界面、大量附加服務使它在用戶中贏得了口碑。1995年12月,它與Netscape的戰略性協議,使它成為一個強勢搜索引擎:當用戶點擊Netscape瀏覽器上的搜索按鈕時,彈出Infoseek的搜索服務,而此前由Yahoo!提供該服務。 1995年12月15日,Alta Vista正式上線。它是第一個支持高級搜索語法的搜索引擎,成功地整合了此前人類所有的信息檢索技術,解決了包括字根處理、關鍵詞檢索、布爾邏輯,以及通過向量空間模型的查詢排名等關鍵問題。正式公開之前,Alta Vista就已經擁有20萬訪問用戶,在短短三個星期之內,到訪人數由每天30萬次增加到200萬次。它的成功在於滿足了用戶三個方面的需求:網上索引范圍超過了此前任何一家搜索引擎;短短幾秒鍾內便可從龐大的資料庫中為用戶返回搜索結果;Alta Vista小組從一開始就採用了一種模塊設計技術,能夠跟蹤網站的流行趨勢,同時不斷擴大處理能力。在當時許多搜索引擎之中,Alta Vista脫穎而出,成為網路搜索的代名詞。Google就是站在這樣的巨人的肩膀上顛覆並創造著。「上網即搜索」 改變了人們上網方式的,就是現在鼎鼎大名的Google。Google並不是搜索引擎的發明者,甚至有點落後,但是它卻讓人們愛上了搜索。
----1998年9月,在佩奇和布林創建Google之時,業界對互聯網搜索功能的理解是:某個關鍵詞在一個文檔中出現的頻率越高,該文檔在搜索結果中的排列位置就要越顯著。這就引出了這樣一個問題,如果一個頁面充斥著某一個關鍵字的話,那麼它將排在很顯著的位置,但這樣一個頁面對於用戶來說,卻沒有任何意義。佩奇和布林發明了「網頁級別」(PageRank)技術,來排列搜索結果。即考察該頁面在網上被鏈接的頻率和重要性來排列,互聯網上指向這一頁面的重要網站越多,該頁面的位次也就越高。當從網頁A鏈接到網頁B時,Google 就認為「網頁A投了網頁B一票」。Google根據網頁的得票數評定其重要性。然而,除了考慮網頁得票數的純數量之外,Google還要分析投票的網頁,「重要」的網頁所投出的票就會有更高的權重,並且有助於提高其他網頁的「重要性」。 Google以其復雜而全自動的搜索方法排除了任何人為因素對搜索結果的影響。沒人能花錢買到更高的網頁級別,從而保證了網頁排名的客觀公正。除此之外,動態摘要、網頁快照、多文檔格式支持、地圖股票詞典尋人等集成搜索也都深得網民的喜愛。其他眾多搜索引擎也都緊跟Google,推出這些服務。Fast(Alltheweb)公司發布的搜索引擎AllTheWeb,總部位於挪威,其在海外的風頭直逼Google。Alltheweb的網頁搜索支持Flash和pdf搜索,支持多語言搜索,還提供新聞搜索、圖像搜索、視頻、MP3、和FTP搜索,擁有極其強大的高級搜索功能。而中國的網路更是憑借「更懂中文」而吸引著中國的網路受眾,它擁有超過10億的中文網頁資料庫,並且,這些網頁的數量每天正以千萬級的速度在增長。
----搜索引擎越來越成為人們生活中重要的一部分,找資料、查地圖、聽音樂,只有想不到的,沒有搜索不到的。
----搜索引擎的三個基本原理
----1.利用蜘蛛系統程序,自動訪問互聯網,並沿著任何網頁中的所有URL爬到其它網頁,重復這過程,並把爬過的所有網頁收集回來。
----2.由分析索引系統程序對收集回來的網頁進行分析,提取相關網頁信息,根據一定的相關度演算法進行大量復雜計算,得到每一個網頁針對頁面內容中及超鏈中每一個關鍵詞的相關度(或重要性),然後用這些相關信息建立網頁索引資料庫。
----3.當用戶輸入關鍵詞搜索後,由搜索系統程序從網頁索引資料庫中找到符合該關鍵詞的所有相關網頁。相關度數值排序,相關度越高,排名越靠前。最後,由頁面生成系統將搜索結果的鏈接地址和頁面內容摘要等內容組織起來返回給用戶。
----說到這里,你可能對搜索引擎和網路蜘蛛有了一個初步的了解了吧!
3、網路蜘蛛的工作原理
----對於搜索引擎來說,要抓取互聯網上所有的網頁幾乎是不可能的,從目前公布的數據來看,容量最大的搜索引擎也不過是抓取了整個網頁數量的百分之四十左右。這 其中的原因一方面是抓取技術的瓶頸,無法遍歷所有的網頁,有許多網頁無法從其它網頁的鏈接中找到;另一個原因是存儲技術和處理技術的問題,如果按照每個頁 面的平均大小為20K計算(包含圖片),100億網頁的容量是100×2000G位元組,即使能夠存儲,下載也存在問題(按照一台機器每秒下載20K計算, 需要340台機器不停的下載一年時間,才能把所有網頁下載完畢)。同時,由於數據量太大,在提供搜索時也會有效率方面的影響。因此,許多搜索引擎的網路蜘 蛛只是抓取那些重要的網頁,而在抓取的時候評價重要性主要的依據是某個網頁的鏈接深度。
----在抓取網頁的時候,網路蜘蛛一般有兩種策略:廣度優先和深度優先(如下圖所示)。
----廣度優先是指網路蜘蛛會先抓取起始網頁中鏈接的所有網頁,然後再選擇其中 的一個鏈接網頁,繼續抓取在此網頁中鏈接的所有網頁。這是最常用的方式,因為這個方法可以讓網路蜘蛛並行處理,提高其抓取速度。深度優先是指網路蜘蛛會從 起始頁開始,一個鏈接一個鏈接跟蹤下去,處理完這條線路之後再轉入下一個起始頁,繼續跟蹤鏈接。這個方法有個優點是網路蜘蛛在設計的時候比較容易。兩種策 略的區別,下圖的說明會更加明確。
----由於不可能抓取所有的網頁,有些網路蜘蛛對一些不太重要的網站,設置了訪問的層數。例如,在上圖中,A為起始網頁,屬於0層,B、C、D、E、F屬於第1 層,G、H屬於第2層,I屬於第3層。如果網路蜘蛛設置的訪問層數為2的話,網頁I是不會被訪問到的。這也讓有些網站上一部分網頁能夠在搜索引擎上搜索 到,另外一部分不能被搜索到。對於網站設計者來說,扁平化的網站結構設計有助於搜索引擎抓取其更多的網頁。
----網路蜘蛛在訪問網站網頁的時候,經常會遇到加密數據和網頁許可權的問題,有些網頁是需要會員許可權才能訪問。當然,網站的所有者可以通過協議讓網路蜘蛛不去抓 取(下小節會介紹),但對於一些出售報告的網站,他們希望搜索引擎能搜索到他們的報告,但又不能完全免費的讓搜索者查看,這樣就需要給網路蜘蛛提供相應的 用戶名和密碼。網路蜘蛛可以通過所給的許可權對這些網頁進行網頁抓取,從而提供搜索。而當搜索者點擊查看該網頁的時候,同樣需要搜索者提供相應的許可權驗證。
----每個網路蜘蛛都有自己的名字,在抓取網頁的時候,都會向網站標明自己的身份。網路蜘蛛在抓取網頁的時候會發送一個請求,這個請求中就有一個欄位為User -agent,用於標識此網路蜘蛛的身份。例如Google網路蜘蛛的標識為GoogleBot,Bai網路蜘蛛的標識為BaiDuSpider, Yahoo網路蜘蛛的標識為Inktomi Slurp。如果在網站上有訪問日誌記錄,網站管理員就能知道,哪些搜索引擎的網路蜘蛛過來過,什麼時候過來的,以及讀了多少數據等等。如果網站管理員發 現某個蜘蛛有問題,就通過其標識來和其所有者聯系。
----網路蜘蛛進入一個網站,一般會訪問一個特殊的文本文件Robots.txt,這個文件一般放在網站伺服器的根目錄下,如:[url][/url]。 網站管理員可以通過robots.txt來定義哪些目錄網路蜘蛛不能訪問,或者哪些目錄對於某些特定的網路蜘蛛不能訪問。例如有些網站的可執行文件目錄和 臨時文件目錄不希望被搜索引擎搜索到,那麼網站管理員就可以把這些目錄定義為拒絕訪問目錄。Robots.txt語法很簡單,例如如果對目錄沒有任何限 制,可以用以下兩行來描述: User-agent: *
Disallow:
----當然,Robots.txt只是一個協議,如果網路蜘蛛的設計者不遵循這個協議,網站管理員也無法阻止網路蜘蛛對於某些頁面的訪問,但一般的網路蜘蛛都會遵循這些協議,而且網站管理員還可以通過其它方式來拒絕網路蜘蛛對某些網頁的抓取。
---- 網路蜘蛛在下載網頁的時候,會去識別網頁的HTML代碼,在其代碼的部分,會有META標識。通過這些標識,可以告訴網路蜘蛛本網頁是否需要被抓取,還可 以告訴網路蜘蛛本網頁中的鏈接是否需要被繼續跟蹤。例如:表示本網頁不需要被抓取,但是網頁內的鏈接需要被跟蹤。
---- 搜索引擎建立網頁索引,處理的對象是文本文件。對於網路蜘蛛來說,抓取下來網頁包括各種格式,包括html、圖片、doc、pdf、多媒體、動態網頁及其 它格式等。這些文件抓取下來後,需要把這些文件中的文本信息提取出來。准確提取這些文檔的信息,一方面對搜索引擎的搜索准確性有重要作用,另一方面對於網 絡蜘蛛正確跟蹤其它鏈接有一定影響。對於doc、pdf等文檔,這種由專業廠商提供的軟體生成的文檔,廠商都會提供相應的文本提取介面。網路蜘蛛只需要調用這些插件的介面,就可以輕松的提取文檔中的文本信息和文件其它相關的信息。但HTML等文檔不一樣,HTML有一套自己的語法,通過不同的命令標識符來表示不同的字體、顏色、位置等版式,如:、、等, 提取文本信息時需要把這些標識符都過濾掉。過濾標識符並非難事,因為這些標識符都有一定的規則,只要按照不同的標識符取得相應的信息即可。但在識別這些信 息的時候,需要同步記錄許多版式信息,例如文字的字體大小、是否是標題、是否是加粗顯示、是否是頁面的關鍵詞等,這些信息有助於計算單詞在網頁中的重要程 度。同時,對於HTML網頁來說,除了標題和正文以外,會有許多廣告鏈接以及公共的頻道鏈接,這些鏈接和文本正文一點關系也沒有,在提取網頁內容的時候, 也需要過濾這些無用的鏈接。例如某個網站有「產品介紹」頻道,因為導航條在網站內每個網頁都有,若不過濾導航條鏈接,在搜索「產品介紹」的時候,則網站內 每個網頁都會搜索到,無疑會帶來大量垃圾信息。過濾這些無效鏈接需要統計大量的網頁結構規律,抽取一些共性,統一過濾;對於一些重要而結果特殊的網站,還 需要個別處理。這就需要網路蜘蛛的設計有一定的擴展性。
---- 對於多媒體、圖片等文件,一般是通過鏈接的錨文本(即,鏈接文本)和相關的文件注釋來判斷這些文件的內容。例如有一個鏈接文字為「張曼玉照片」,其鏈接指 向一張bmp格式的圖片,那麼網路蜘蛛就知道這張圖片的內容是「張曼玉的照片」。這樣,在搜索「張曼玉」和「照片」的時候都能讓搜索引擎找到這張圖片。另 外,許多多媒體文件中有文件屬性,考慮這些屬性也可以更好的了解文件的內容。
---- 動態網頁一直是網路蜘蛛面臨的難題。所謂動態網頁,是相對於靜態網頁而言,是由程序自動生成的頁面,這樣的好處是可以快速統一更改網頁風格,也可以減少網 頁所佔伺服器的空間,但同樣給網路蜘蛛的抓取帶來一些麻煩。由於開發語言不斷的增多,動態網頁的類型也越來越多,如:asp、jsp、php等。這些類型 的網頁對於網路蜘蛛來說,可能還稍微容易一些。網路蜘蛛比較難於處理的是一些腳本語言(如VBScript和JavaScript)生成的網頁,如果要完 善的處理好這些網頁,網路蜘蛛需要有自己的腳本解釋程序。對於許多數據是放在資料庫的網站,需要通過本網站的資料庫搜索才能獲得信息,這些給網路蜘蛛的抓 取帶來很大的困難。對於這類網站,如果網站設計者希望這些數據能被搜索引擎搜索,則需要提供一種可以遍歷整個資料庫內容的方法。
對於網頁內容的提取,一直是網路蜘蛛中重要的技術。整個系統一般採用插件的形式,通過一個插件管理服務程序,遇到不同格式的網頁採用不同的插件處理。這種 方式的好處在於擴充性好,以後每發現一種新的類型,就可以把其處理方式做成一個插件補充到插件管理服務程序之中。
---- 由於網站的內容經常在變化,因此網路蜘蛛也需不斷的更新其抓取網頁的內容,這就需要網路蜘蛛按照一定的周期去掃描網站,查看哪些頁面是需要更新的頁面,哪些頁面是新增頁面,哪些頁面是已經過期的死鏈接。
---- 搜索引擎的更新周期對搜索引擎搜索的查全率有很大影響。如果更新周期太長,則總會有一部分新生成的網頁搜索不到;周期過短,技術實現會有一定難度,而且會 對帶寬、伺服器的資源都有浪費。搜索引擎的網路蜘蛛並不是所有的網站都採用同一個周期進行更新,對於一些重要的更新量大的網站,更新的周期短,如有些新聞 網站,幾個小時就更新一次;相反對於一些不重要的網站,更新的周期就長,可能一兩個月才更新一次。
---- 一般來說,網路蜘蛛在更新網站內容的時候,不用把網站網頁重新抓取一遍,對於大部分的網頁,只需要判斷網頁的屬性(主要是日期),把得到的屬性和上次抓取的屬性相比較,如果一樣則不用更新。
---- 現在大家對網路蜘蛛的工作原理有了初步的了解了吧,了解後就要在以後的網站製作中考慮蜘蛛的爬行規律,比如製作網站地圖就很重要,好了,如果你有更好的見解,請到這里發表,火鳥非常願意與你交流,共同研究網站製作技巧,盡量將自己的網站製作的符合標准,符合用戶的習慣!
Ⅷ 求抽取網頁主要內容的演算法(有c#代碼更佳)
定義一個DIV專門用來放這類數據的內容
<div id="div_mostly" runat="server">新聞主體內容</div>
後台代碼
div_mostly.InnerHtml來獲取標簽內的內容
--------------------------------------------
以上解決方法的前提是你必須知道什麼內容是你需要的「主要內容」
Ⅸ 如何提取正文內容 BeautifulSoup的輸出
創建一個新網站,一開始沒有內容,通常需要抓取其他人的網頁內容,一般的操作步驟如下:
根據url下載網頁內容,針對每個網頁的html結構特徵,利用正則表達式,或者其他的方式,做文本解析,提取出想要的正文。
為每個網頁寫特徵分析這個還是太耗費開發的時間,我的思路是這樣的。
Python的BeautifulSoup包大家都知道吧,
import BeautifulSoup
soup = BeautifulSoup.BeautifulSoup(html)
利用這個包先把html里script,style給清理了:
[script.extract() for script in soup.findAll('script')]
[style.extract() for style in soup.findAll('style')]
清理完成後,這個包有一個prettify()函數,把代碼格式給搞的標准一些:
soup.prettify()
然後用正則表達式,把所有的HTML標簽全部清理了:
reg1 = re.compile("<[^>]*>")
content = reg1.sub('',soup.prettify())
剩下的都是純文本的文件了,通常是一行行的,把空白行給排除了,這樣就會知道總計有多少行,每行的字元數有多少,我用excel搞了一些每行字元數的統計,如下圖:
x坐標為行數,y坐標為該行的字元數
很明顯,會有一個峰值,81~91行就應該是這個網頁的正文部分。我只需要提取81~91行的文字就行了。
問題來了,照著這個思路,有什麼好的演算法能夠通過數據分析的方式統計出長文本的峰值在哪幾行?
BeautifulSoup不僅僅只是可以查找,定位和修改文檔內容,同樣也可以用一個好的 格式進行輸出顯示。BeautifulSoup可以處理不同類型的輸出: