我希望能够获取网页的html并将其保存到String,因此可以对其进行一些处理。另外,我该如何处理各种类型的压缩。
String
我将如何使用Java做到这一点?
这是一些使用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 } } }
我会使用像Jsoup这样的体面的HTML解析器。然后就这么简单:
String html = Jsoup.connect("http://stackoverflow.com").get().html();
它完全透明地处理GZIP和分块响应以及字符编码。它还提供了更多优势,例如HTML 遍历和CSS选择器操作(如jQuery一样)。你只需将其作为Document,而不是作为一个String。
Document
Document document = Jsoup.connect("http://google.com").get();
你真的不想在HTML上运行基本的String方法甚至regex来处理它。