国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

Nutch抓取流程

2024-07-21 02:52:14
字體:
來源:轉載
供稿:網友

nutch抓取流程注入起始url(inject)、生成爬取列表(generate)、爬取(fetch)、解析網頁內容(parse)、更新url數據庫(updatedb)1:注入起始url(inject)org.apache.nutch.crawl.Injector注入待抓取URL,因為Nutch的抓取程序要抓取網頁,肯定需要有一個或者多個入口url。nutch會按照廣度優先策略(一般有廣度優先策略和深度優先策略)進行抓取,根據前面指定的url進行抓取工作。url存儲具體格式為<Text, CrawlDatum>。其中的key表示該URL的地址,而value則是Nutch自己定義的一個類型“CrawlDatum”,該類型實現了"Writable"接口,用來表示頁面的一些屬性?!癈rawlDatum"類所在位置:org.apache.nutch.crawl.CrawlDatum其中包括了頁面的狀態,抓取時間,抓取間隔等屬性。inject過程把這些數據存儲到crawldb目錄中。2:生成爬取列表(generate)org.apache.nutch.crawl.Generator生成segment。這一步驟主要是對上一步提交的URL集合進行分析,確定抓取任務的詳細信息。在segments目錄下新建一個System.currentTimeMillis()時間標識的文件,如:20150906145715另外遍歷crawlDb,取出topN個需要fetch的urlList,【topN的配置屬性是:generate.topN,nutch-default.xml中沒有配置這個屬性,查看代碼發現如果沒有配置默認是long的最大值job.getLong(GENERATOR_TOP_N, Long.MAX_VALUE),分析crawl腳本發現這個值會被設置為50000numSlaves=1sizeFetchlist=`exPR $numSlaves /* 50000`generate_args=($commonOptions "$CRAWL_PATH"/crawldb "$CRAWL_PATH"/segments -topN $sizeFetchlist -numFetchers $numSlaves -noFilter)】存放到segments/20150906145715/crawl_generate文件中,crawl_generate 為SequenceFile文件3:爬取(fetch)org.apache.nutch.fetcher.Fetcher分析提交的URL集合之后,將頁面內容抓取下來,存于segment目錄下。抓取過程中,頁面的URL地址可能因為鏈接發生改變(302重定向),從而需要更新URL地址;例如:京東手機分類url:http://list.jd.com/9987-653-655.html,打開之后url就變成這個了:http://list.jd.com/list.html?cat=9987,653,655抓取采用多線程方式進行,以提高抓取速度;參數為:fetcher.threads.fetch,默認最大線程數量為10,使用crawl腳本的話線程數會被設置為50,【numThreads=50__bin_nutch fetch $commonOptions -D fetcher.timelimit.mins=$timeLimitFetch "$CRAWL_PATH"/segments/$SEGMENT -noParsing -threads $numThreads】fetch操作過程中調用了parse操作。4:解析(parse)org.apache.nutch.parse.ParseSegment內容解析器。抓取到的頁面文件被提交到這里,實現對頁面文件的處理,包括頁面文件的分析和處理

4.1:parsed text &data解析segment中由fetch得到的頁面,并進行整理,將頁面分成為parse-date和parse-textparse-date中保存的是頁面的題名、作者、日期、鏈接等元數據信息;parse-text中保存的是頁面的文本內容。通過上面幾步操作,創建了如下幾個目錄content、crawl_fetch、crawl_generate、crawl_parse、parse_data、parse_textcontent包含下載頁面的原始數據,存儲為map文件,格式是<url,Content>。為了展示快摘頁面,這里使用文件存儲數據,因為Nutch需要對文件做快速隨機的訪問。crawl_generate它包含將要爬取的URL列表以及從CrawlDb取到的與這些URL頁相關的當前狀態信息,對應的文件的格式<url,CrawlDatum>。crawl_fetch它包含數據爬取的狀態信息,即爬取是否成功相應碼是什么,等等。這個數據存儲在map文件里,格式是<url,CrawlDatum>crawl_parse每個成功爬取并解析的頁面的鏈接列表都保存在這里,頁面中解析出來的鏈接都保存在這里面也是<url,CrawlDatum>格式存儲的。parse_date解析過程中收集的元數據,使用<url,ParseData>格式存儲的parse_text存儲的是網址和標題信息,使用<url,ParseText>格式存儲的5:更新url數據庫(updatedb)根據第四步的解析結果更新crawldb數據庫其實這一步就是調用CrawlDb.java中的update方法,從第95和96行代碼可以發現其實就是根據第四步生成的crawl_fetch和crawl_parse中的數據文件進行更新。


上一篇:select @@identity的用法

下一篇:JSON

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 凤凰县| 蚌埠市| 甘孜县| 武功县| 永平县| 顺昌县| 玛曲县| 昌宁县| 延庆县| 阿城市| 威信县| 尼木县| 略阳县| 吴川市| 虹口区| 辽源市| SHOW| 孟州市| 长子县| 大方县| 宜阳县| 龙胜| 太和县| 若羌县| 南安市| 漯河市| 南雄市| 西充县| 巴里| 黄平县| 陇川县| 舞阳县| 颍上县| 张家口市| 乌拉特中旗| 崇信县| 磐安县| 永川市| 岫岩| 响水县| 武邑县|