2015-03-25 109 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存在疑问,或者如果您提出要求,他们会给予您许可。 (如果您愿意付费...可能会改变这种情况。)