我正在构建一个网络爬虫。 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()
方法,它看起来有点凌乱?
“分离出DNS解析器?”我不明白这一点。是的,DNS解决方案增加了开销,但我不明白“分离出来”如何让您的网络爬虫更快。 –
最简单的方法是拥有本地DNS缓存,因为当您执行URL内容加载时,许多服务器都依赖于VirtualHost和域。如果您直接请求IP,您将无法获得正确的内容。 –