【正文】
(6, ())。 public CsdnBlogDao() { try { ()。 } public void setTitle(String title) { = title。該軟件支持Windows和Linux系統(tǒng)。MySQL是一種關系數據庫管理系統(tǒng),關系數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度并提高了靈活性。 } } //process(過程) public void process(Page page) { //()來保存抽取結果 //().xpath()則是按照某個規(guī)則對結果進行抽取,這里抽取支持鏈式調用 ListString pages=().xpath([class=39。import 。 // 把對象輸出控制臺 (csdnBlog)。]/a/allText()).all()))。article_title39。import 。如果大家做過前端開發(fā),肯定知道$(39。 //執(zhí)行這個main方法,即可在控制臺看到抓取結果。MercatorWeb(Heydon 和Najork, 1999)爬蟲使用了一種自適應的平衡策略:如果從某一服務器下載一個文檔需要t秒鐘,爬蟲就等待10t秒的時間,然后開始下一個頁面。就像Koster(Koster,1995)所注意的那樣,爬蟲的使用對很多工作都是很有用的,但是對一般的社區(qū),也需要付出代價。兩種最簡單的重新訪問策略是由Cho和GarciaMolina研究的(Cho 和GarciaMolina,2003):統(tǒng)一策略:使用相同的頻率,重新訪問收藏中的所有的鏈接,而不考慮他們更新頻率。一些爬蟲僅僅抓取形如a href=”url”鏈接。Cothey(Cothey,2004)引入了一種路徑檢索的爬蟲,它會嘗試抓取需要檢索資源的所有URL。OPIC的程序首先抓取獲取權值最大的頁面,實驗在10萬個冪指分布的模擬頁面中進行。? 選擇策略,決定所要下載的頁面;? 重新訪問策略,決定什么時候檢查頁面的更新變化;? 平衡禮貌策略,指出怎樣避免站點超載;? 并行策略,指出怎么協同達到分布式抓取的效果;選擇策略:就現在網絡資源的大小而言,即使很大的搜索引擎也只能獲取網絡上可得到資源的一小部分。本節(jié)根據網頁數據形式的不同,將基于網頁內容的分析算法,歸納以下三類:第一種針對以文本和超鏈接為主的無結構或結構很簡單的網頁;第二種針對從結構化的數據源(如RDBMS)動態(tài)生成的頁面,其數據不能直接批量訪問;第三種針對的數據界于第一和第二類數據之間,具有較好的結構,顯示遵循一定模式或風格,且可以直接訪問。網站粒度的爬蟲抓取的關鍵之處在于站點的劃分和站點等級(SiteRank)的計算。webmagicavalonwebmagicavalon是一個特殊的項目,它想基于WebMagic實現一個產品化的工具,涵蓋爬蟲的創(chuàng)建、爬蟲的管理等后臺工具。WebMagic總體架構圖如下:圖11 WebMagic總體架構 Webmagic項目組成WebMagic項目代碼包括幾個部分,在根目錄下以不同目錄名分開?;陉P鍵字匹配的搜索技術有較大的局限性:首先,它不能區(qū)分同形異義。中大型的數據庫產品有:Oracle、Sql Server等。 產生背景隨著網絡的迅速發(fā)展,萬維網成為大量信息的載體,如何有效地提取并利用這些信息成為一個巨大的挑戰(zhàn)。關鍵詞:網絡爬蟲;Java;多線程;MySQL;Webmagic;CsdnblogABSTRACTWeb Crawler, usually called Crawler for short, is an important part of search engine. With the highspeed development of information, Web Crawler the search engine can not lack of which is a hot research topic those years. The quality of a search engine is mostly depended on the quality of a Web Crawler. Nowadays, the direction of researching Web Crawler mainly divides into two parts: one is the searching strategy to web pages。控制器控制器是網絡爬蟲的中央控制器,它主要是負責根據系統(tǒng)傳過來的URL鏈接,分配一線程,然后啟動線程調用爬蟲爬取網頁的過程。例如那些用戶注冊后內容才可見的網頁就屬于 Deep Web。這四大組件對應爬蟲生命周期中的下載、處理、管理和持久化等功能。Selenium是一個模擬瀏覽器進行頁面渲染的工具,WebMagic依賴Selenium進行動態(tài)頁面的抓取。基于鏈接的抓取的問題是相關頁面主題團之間的隧道現象,即很多在抓取路徑上偏離主題的網頁也指向目標網頁,局部評價策略中斷了在當前路徑上的抓取行為。網頁的內容從原來的以超文本為主,發(fā)展到后來動態(tài)頁面(或稱為Hidden Web)數據為主,后者的數據量約為直接可見頁面數據(PIW,Publicly Indexable Web)的400~500倍。正如愛德華等人所說的:“用于檢索的帶寬不是無限的,也不是免費的;所以,如果引入衡量爬蟲抓取質量或者新鮮度的有效指標的話,不但伸縮性,連有效性都將變得十分必要”(愛德華等人,2001年)。”Abiteboul (Abiteboul 等人, 2003),設計了一種基于OPIC(在線頁面重要指數)的抓取戰(zhàn)略。這種策略會導致很多的html資源在無意中錯過,一種相似的策略是將網絡資源的擴展名同已知是html文件類型的一組擴展名(,.htm,.asp,.php,.aspx,反斜杠)進行比較。這些頁面通常只有在向數據庫提交查詢的時候才可以訪問到,如果沒有鏈接指向他們的話,一般的爬蟲是不能訪問到這些頁面的。在這個模型下,每一個顧客在投票系統(tǒng)的平均時間,相當于爬蟲的平均過時性。平衡禮貌策略爬蟲相比于人,可以有更快的檢索速度和更深的層次,所以,他們可能使一個站點癱瘓。按照這個速度,如果一個站點有超過10萬的頁面,即使我們擁有零延遲和無窮帶寬的完美連接,它也會需要兩個月的時間來下載整個站點,并且,這個服務器中的資源,只有一小部分可以使用。表1 爬蟲函數及其功能表方法說明示例create(PageProcessor)創(chuàng)建Spider(new GithubRepoProcessor())addUrl(String…)添加初始的URLspider .addUrl()addRequest(Request...)添加初始的Requestspider .addRequest()thread(n)開啟n個線程(5)run()啟動,會阻塞當前線程執(zhí)行()start()/runAsync()異步啟動,當前線程繼續(xù)執(zhí)行()stop()停止爬蟲()test(String)抓取一個頁面進行測試spider .test()addPipeline(Pipeline)添加一個Pipeline,一個Spider可以有多個Pipelinespider .addPipeline(new ConsolePipeline())setScheduler(Scheduler)設置Scheduler,一個Spider只能有個一個Scheduler(new RedisScheduler())setDownloader(Downloader)設置Downloader,一個Spider只能有個一個Downloaderspider .setDownloader(new SeleniumDownloader())get(String)同步調用,并直接取得結果ResultItems result = spider .get()getAll(String…)同步調用,并直接取得一堆結果ListResultItems results = spider .getAll(, )對站點本身的一些配置信息,例如編碼、HTTP頭、超時時間、重試策略等、代理等,都可以通過設置Site對象來進行配置。entrytitle public39。import 。// 文章數量加1 // 用CsdnBlog類來存抓取到的數據,方便存入數據庫 CsdnBlog csdnBlog = new CsdnBlog()。article_l39。]).regex(\\((\\d+)\\)).get()))。 (【爬蟲結束】共抓取 + size + 篇文章,耗時約 + ((endTime startTime) / 1000) + 秒,已保存到數據庫,請查收!)。 //設置線程數 //(5)。 } } public Site getSite() { return site。它是著名的數據庫設計工具DBDesigner4的繼任者。 } public int getKey() { return key。 } Override public String toString() { return CsdnBlog [key= + key + , title= + title + , content= + content + ,date= + date + , tags= + tags + , category= + category + , view= + view + , ments= + ments + , copyright= + copyright + ]。 (3,())。 (9, ())。useUnicode=trueamp。 } public String getTags() { return tags。// 編號 private String title。由于其社區(qū)版的性能卓越,搭配 PHP 和 Apache 可組成良好的開發(fā)環(huán)境。 if (()5) { (()1)。import 。 boolean flag = false。]/label/span/text()).all()))。]/a/text()).get())。 // 設置csdn用戶名 private static int size = 0。客觀的說,它比XPath寫起來要簡單一些,但是如果寫復雜一點的抽取規(guī)則,就相對要麻煩一點。 try { //添加到JMT監(jiān)控中 ().register(oschinaSpider)。訪問記錄顯示已知爬蟲的訪問間隔從20秒鐘到34分鐘不等。216。(兩種情況下,爬蟲的重新抓取都可以采用隨機方式,或者固定的順序)Cho和GarciaMolina證明了一個出人意料的結果。第三代檢索技術將建立在人機巧妙的聯系的基礎上。一些路徑檢索的爬蟲也被稱為收割機軟件,因為他們通常用于收割或者收集所有的內容,可能是從特定的頁面或者主機收集相冊的照片。比較的基礎是真實頁面pageRank值和計算出來的pageRank值的接近程度。這就要求一個公共標準來區(qū)分網頁的重要程度,一個頁面的重要程度與他自身的質量有關,與按照鏈接數、訪問數得出的受歡迎程度有關,甚至與他本身的網址(后來出現的把搜索放在一個頂級域名或者一個固定頁面上的垂直搜索)有關。2) 超文本分類和聚類算法根據網頁鏈接網頁的相關類型對網頁進行分類,依靠相關聯的網頁推測該網頁的類型 爬行策略下述的三種網絡特征,造成了設計網頁爬蟲抓取策略變得很難:216。文獻[18]討論了在分布式情況下,通過對同一個域名下不同主機、服務器的IP地址進行站點劃分,構造站點圖,利用類似PageRank的方法評價SiteRank。在目前為覆蓋盡可能多的網頁,一般使用廣度優(yōu)先搜索方法。WebMagiccore的目標是成為網頁爬蟲的一個教科書般的實現。 搜索引擎的發(fā)展面臨著兩大難題:一是如何跟上Internet的發(fā)展