2015-03-25 91 views
1

如何編寫代碼來抓取這個?獲取許多網站和服務的主機

一個網站提供了查找是哪個公司在託管的特定網站或服務:

例如,把fbcdn.net它給Facebook的。把paypal.com,它給了eBay。

我有超過100000個網站,並希望看到相應的公司。現在我正在尋找Jsoup,它是解決方案嗎?所以我可以這樣做:

For(String website : websiteSet){ 
    url = "http://hostadvice.com/tools/whois/#" + website 
    Document doc = Jsoup.connect(url).get();   
    String company = doc.getHost();  
    Map.put(website, company);   
} 

任何建議?因爲我聽說被抓取的網站可能會阻止我的請求,因爲它會在幾分鐘內發送太多的請求?

+1

首先您不能使用GET,因爲請求必須以POST方式發送。其次,我認爲大規模的自動抓取違反了他們的「服務條款」。 – SubOptimal 2015-03-25 10:21:42

+0

爲什麼不爲此使用[API](http://stackoverflow.com/questions/36817/who-provides-a-whois-api)? – JonasCz 2015-03-30 11:42:17

回答

0

如果你擔心被封鎖,那麼正確的解決方案是:

  1. 閱讀網站的「服務條款」頁面。

  2. 如果ToS頁面允許網頁抓取(或沒有提及它),請遵循ToS中列出的任何規則,以及網站的任何「robots.txt」文件所述。

  3. 如果ToS禁止爬網,請查看他們是否提供API(授權用戶)來檢索信息。

  4. 如果ToS禁止爬網並且沒有API,請聯繫網站所有者並要求獲得抓取他們網站的權限,或者以其他方式獲取您需要的信息。

  5. 如果他們說「不」......放棄。


在這種情況下,它是很清楚,你試圖做是不允許的。 (從法律角度來看,這將違反他們的版權,並可能違反與未經授權訪問信息有關的其他法律。)API存在疑問,或者如果您提出要求,他們會給予您許可。 (如果您願意付費...可能會改變這種情況。)

相關問題