1

我正在构建一个网络爬虫。读完这篇我明白 DNS 解析很慢,所以我们应该分离出 DNS Resolver。

所以说你有 String 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呢?没有url.setHost()办法,就是有点乱?

4

2 回答 2

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

于 2013-04-12T02:50:48.860 回答
0

试试这个:

  URL oracle = new URL("http://www.oracle.com/");
  URLConnection urlc = oracle.openConnection();
  urlc.setDoInput(true);
  urlc.setRequestProperty("Accept", "text/text");
  InputStream inputStream = urlc.getInputStream();
  String myString = IOUtils.toString(inputStream, "UTF-8");

...使用上面 Apache Commons 的 IOUtils:

http://commons.apache.org/io/api-1.4/org/apache/commons/io/IOUtils.html#toString(java.io.InputStream,%20java.lang.String)

于 2013-04-12T03:14:24.780 回答