Heritrix原始碼分析 十五 各種問題總結

2021-08-31 02:17:09 字數 1797 閱讀 9944

相關問題:

1.heritrix雜湊30個dns後就結束

2.如何用heritrix實現增量抓取,也就是抓取更新了的網頁

1.heritrix雜湊30個dns後就結束:

總體來說,是30個抓取執行緒去獲取**資料發生交通堵塞,導致無法獲取url內容,最後都卡死在那裡.

沒讀原始碼真的很難知道這個原因,好好的url,比如

,為什麼變成dns:heritrix.com。而且跑上30個heririx就停止?這裡先說下為什麼會

會變成dns:heritrix.com.大家知道乙個url位址過去都需要通過dns伺服器獲取該url所在的位址,heritrix也做了這個事情。所以dns:heritrix.com是去進行dns解析,同時heritrix會將dns資訊快取(快取到bdb資料庫),以便下次

/a.html

這樣的url(同乙個host下)無需再去進行類似的解析,提高效率。同時heritrix還可以配置快取的dns資訊的有效期,預設為6小時,見order.xml中的86400接下來說下為什麼爬上30個dns:heritrix.com heritrix就停止。我想你應該改了heritrix的佇列分配策略,也就是order.xml中的org.archive.crawler.frontier.hostnamequeueassignmentpolicy

預設的hostnamequeueassignmentpolicy是以host作為抓取佇列分組依據,通乙個host(如以上的

www.heritrix.com

和www.heritrix.com/a.html

)下的url將會分配進同乙個抓取佇列.heritrix通過抓取佇列來實現對抓取速度的控制,以防止對乙個host的過度抓取(後果很嚴重,可能對方會封你ip)。正常的hostnamequeueassignmentpolicy,當你從這個host抓取完乙個url後會計算這個url抓取的速度,同時和你所配置的抓取速度佇列,如果過快,則計算該url所需要抓取的正常時間,讓其等待抓取過快的時間差值(比如按照正常配置,你每秒頻寬是50k,而計算出來你抓取的是100k,則會讓其等待(100-50)*抓取時間秒).則該抓取佇列在該段時間內不會再排放url,如此做到控制抓取速度.而當你採用第三方的佇列分配策略,很有可能打破這種機制,比如網上流行的elhash,的確可以提高抓取速度.但當你種子比較少的時候,多個執行緒一窩蜂的去抓取少量種子就很有可能交通堵塞了,最終是大家都獲取不了網頁內容,如此也就抽取不出新的url。如此一來,雜湊30個dns:url後heritrix就自動結束了.

2.如何用heritrix實現增量抓取,也就是抓取更新了的網頁

heritrix從設計角度是一次性整站複製,所以要實現增量抓取需要改動**。但heritrix自身儲存了判斷是否增量抓取的各種引數,所以可以通過這些引數來判斷是否需要增量抓取。我判斷增量抓取會經過以下4個環節:

1)判斷url是否抓取過,如抓取過跳到2)繼續判斷

2)從url的http-header裡獲取該url的last-modified,判斷是否有更新.如果有更新則表示需要更新之前的網頁.但很多url可能沒有這個值,則跳轉到3)

3)該url內容的md5值是否更新,如果有更新,則很有可能需要抓取.但很多時候更新了也並不能代表該url已經更新過,比如裡面有廣告,廣告內容變化.所以進行第四步

4)相似度分析,對他們的網頁內容進行相似度分析,這個是最準確的但也是最複雜最耗效能的一步.我目前沒有實現.

有了以上4步,我們再來看如何在heritrix裡實現.

Heritrix原始碼分析 十五

相關問題 1.heritrix雜湊30個dns後就結束 2.如何用heritrix實現增量抓取,也就是抓取更新了的網頁 1.heritrix雜湊30個dns後就結束 總體來說,是30個抓取執行緒去獲取 資料發生交通堵塞,導致無法獲取url內容,最後都卡死在那裡.沒讀原始碼真的很難知道這個原因,好好的...

Heritrix原始碼分析 十五 各種問題總結

相關問題 1.heritrix雜湊30個dns後就結束 2.如何用heritrix實現增量抓取,也就是抓取更新了的網頁 1.heritrix雜湊30個dns後就結束 總體來說,是30個抓取執行緒去獲取 資料發生交通堵塞,導致無法獲取url內容,最後都卡死在那裡.沒讀原始碼真的很難知道這個原因,好好的...

網路爬蟲Heritrix原始碼分析 一 包介紹

歡迎加入heritrix群 qq 10447185 lucene solr群 qq 118972724 之前說過要分享下我的爬蟲經驗,但一直找不到突破口,現在才感覺寫點東西真的很難,所以大家真的要感謝那些無私的前輩們,在網上留下的一篇篇可以指點迷津的文章。想了很久,還是先從heritrix的包開始說...