一尘不染

您如何以编程方式下载Java网页

java

我希望能够获取网页的html并将其保存到String,因此可以对其进行一些处理。另外,我该如何处理各种类型的压缩。

我将如何使用Java做到这一点?


阅读 342

收藏
2020-03-02

共2个答案

一尘不染

这是一些使用Java的URL类的经过测试的代码。我建议比在这里处理异常或将异常传递到调用堆栈方面做得更好。

public static void main(String[] args) {
    URL url;
    InputStream is = null;
    BufferedReader br;
    String line;

    try {
        url = new URL("http://stackoverflow.com/");
        is = url.openStream();  // throws an IOException
        br = new BufferedReader(new InputStreamReader(is));

        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
    } catch (MalformedURLException mue) {
         mue.printStackTrace();
    } catch (IOException ioe) {
         ioe.printStackTrace();
    } finally {
        try {
            if (is != null) is.close();
        } catch (IOException ioe) {
            // nothing to see here
        }
    }
}
2020-03-02
一尘不染

我会使用像Jsoup这样的体面的HTML解析器。然后就这么简单:

String html = Jsoup.connect("http://stackoverflow.com").get().html();

它完全透明地处理GZIP和分块响应以及字符编码。它还提供了更多优势,例如HTML 遍历和CSS选择器操作(如jQuery一样)。你只需将其作为Document,而不是作为一个String

Document document = Jsoup.connect("http://google.com").get();

你真的不想在HTML上运行基本的String方法甚至regex来处理它。

2020-03-02