2013-04-12 32 views
1

我正在构建一个网络爬虫。 Having read this我知道DNS解析速度很慢,所以我们应该分离出DNS解析器。Java:使用IP打开一个URL

所以说,你有 字符串urlString http://google.com 可以然后再转换为IP做

URL url = new URL(urlString) 
InetAddress ip = InetAddress.getByName(url.getHost()); 

但随后你如何下载实际网站本身?

的URL,我们可以只道是这样的:

String htmlDocumentString = new Scanner(new url.openStream(), "UTF-8").useDelimiter("\\A").next(); 

但是,如果我们要使用的解析的IP,做我们必须手动重建一个IP网址是什么?没有url.setHost()方法,它看起来有点凌乱?

+1

“分离出DNS解析器?”我不明白这一点。是的,DNS解决方案增加了开销,但我不明白“分离出来”如何让您的网络爬虫更快。 –

+1

最简单的方法是拥有本地DNS缓存,因为当您执行URL内容加载时,许多服务器都依赖于VirtualHost和域。如果您直接请求IP,您将无法获得正确的内容。 –

回答

0

从URL读很简单:

public class URLReader { 
public static void main(String[] args) throws Exception { 

    URL oracle = new URL("http://www.oracle.com/"); 
    BufferedReader in = new BufferedReader(
    new InputStreamReader(oracle.openStream())); 

    String inputLine; 
    while ((inputLine = in.readLine()) != null) 
     System.out.println(inputLine); 
    in.close(); 
} 

来自http://docs.oracle.com/javase/tutorial/networking/urls/readingURL.html

相关问题