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