2011-06-06 65 views
3

我是新來抓取,最近我意識到,線程可能是快速抓取網站的方法。在我開始討論這個問題之前,我認爲確定這個問題是否會最終導致我扼殺是很明智的。所以問題是,如果我重寫我的程序以使用線程更快地抓取,是否會違反大多數網站的robots.txt?線程是否違反了robots.txt?

回答

1

取決於:如果您的線程擁有自己的單獨隊列以便進行爬網,並且在任何類型的隊列之間沒有同步,那麼當兩個(或更多)線程嘗試執行時,最終可能會違反站點的robots.txt快速連續抓取同一網站的網址。當然a well designed crawler不會那樣做!

非常「簡單」的搜尋器具有某種共享優先級隊列,根據各種機器人排除協議對工作進行排隊,並且所有線程都會從該隊列中抓取要爬網的URL。這種方法存在許多問題,特別是在嘗試擴展和爬行整個世界網絡時。

更高級的抓取工具可以執行「預算」計算(see the BEAST budget enforcement section),這使得他們可以根據各種標準智能計劃抓取:垃圾郵件指標,robots.txt,覆蓋率與新鮮度等。預算執行使多線程爬蟲更容易快速爬行,禮貌地爬行!

0

他們是無關的。 robots.txt表示您是否被允許訪問某些內容。它沒有辦法說「請只發送一個請求」。

+2

此網站上至少有一條爬行延遲線:http://www.bhphotovideo.com/robots.txt。我認爲這是標準。 – 2011-06-06 18:05:36

+1

這裏你去:http://en.wikipedia.org/wiki/Robots_exclusion_standard#Crawl-delay_directive – 2011-06-06 18:07:22