抓取流程 generator

2021-08-31 13:17:38 字數 2313 閱讀 4304

一。topn job:對urls預處理並取topn urls by score decending.

map:-> 。urls預處理和格式轉換

a.url filter

b.初步處理是否fetch(當fetchtime 比當前時間滯後才fetch)

c.抓取間隔處理。如果 在crawl.gen.delay時間範圍內,則不會再將次雲抓取,這個也是索引實時度的乙個主要引數 。/7days/

d.scoring filter 作為sort value.其中link and opic只是簡單地利用datum.getscore() * initsort返回。兩者預設都是1.0

e.score threshold控制 。目前沒有設定,作為nan值處理.

f.更新_ngt_;同時轉換輸出格式。

partition:利用urlpartitioner對url根據partition.url.mode進行hash,結果將導致相同的host(host或ip)的urls分到相同的red上去。

red:根據 topn要求,對每個red進行期望(mean)計算,所以所有red得到的不是準確的topn值。

對於生成的segnu相同的情況下,生成的臨時結果fetchlist-segnum會將相關的red結果存放在同一檔案下。

-->

note:decreasingfloatcomparator

二。parition job(其實是生成segment name及其中的crawl_generate資料)

p:同topn job

r:convert -->

sequencefileoutputformat

note:這job使用了hashcomparator作為outputkeycomparator,而它是優先於red執行的,他將host比url中的其它部分增加了權重,所以得到的結果是不同site的urls更加有均勻地分發到各red中?

也許會問,為什麼topn job中的part已經相同host的urls均勻分布l在各個red中了而這裡又搞亂呢?但我認為前者是不必要的,況且這樣造成了如果host不均勻時出現某個red負載較重;而最關鍵的是這裡的part,所以它是乙個按url hash的值,而且增加了host的權重。

[三。update crawldb job](

此job是update時才執行)

過程是:如果存在舊的crawldatum則保留下來,同時復位 _ngt_;也具備url deduplicate功能。

將injector的結果與上述的結果合併,可以看出兩者都 是以輸出的,所以是可以合併 。

所以結果是:,note:此結果是存放在crawldb/current下,所以以mapfileoutputformat與injector的保持一致。

topn job:

map -> (在map後直接呼叫)part

-> (所有map完成後逐個partition進行)sort -> red -> (red後直接呼叫) outputformat

結果輸出:

bnitz@leibnitz-laptop:~/search_engine/nutch/mynutch1.2$ hadoop fs -text output/debug/segments/20110706014523/crawl_generate/part-00000

hadoop home:

version: 7

status: 1 (db_unfetched)

fetch time: mon jul 04 14:57:19 cst 2011

modified time: thu jan 01 08:00:00 cst 1970

retries since fetch: 0

retry interval: 2592000 seconds (30 days)

score: 1.0

signature: null

metadata: _ngt_: 1309887693964

version: 7

status: 1 (db_unfetched)

fetch time: mon jul 04 14:57:19 cst 2011

modified time: thu jan 01 08:00:00 cst 1970

retries since fetch: 0

retry interval: 2592000 seconds (30 days)

score: 1.0

signature: null

metadata: _ngt_: 1309887693964

nutch2 2 1抓取流程

整體流程 injectorjob generatorjob fetcherjob parserjob dbupdaterjob solrindexerjob injectorjob 從檔案中得到一批種子網頁,把它們放到抓取資料庫中去 generatorjob 從抓取資料庫中產生要抓取的頁面放到抓取佇...

Generator函式在流程控制中的應用

接手了平台其他相關遊戲的 流程控制相互交錯,不易理解 難以維護。可能是剛做遊戲的原因,如果你們有什麼更簡單的流程控制方法,歡迎分享 我下意識的就想到了generator函式的特性,感覺用著這裡非常方便 以前一直覺得這是個非同步流程控制中過度性質的方法,並且需要配合co才能自動執行,所以基本沒實際用過...

(四)Scrapy的抓取流程 Engine

engine.py所在的目錄,抓取流程中的主要模組。executionengine的 init 方法,初始化抓取流程中用到的各個控制項。還是從上一章裡的open spider和start兩個方法來看流程。1 open spider 首先會根據spider物件裡的start urls獲取到初始鏈結,然...