【问题标题】:Extract HTML from URL从 URL 中提取 HTML
【发布时间】:2011-07-09 23:19:14
【问题描述】:

我正在使用 Boilerpipe 从 url 中提取文本,使用以下代码:

URL url = new URL("http://www.example.com/some-location/index.html");
String text = ArticleExtractor.INSTANCE.getText(url);

String text 仅包含 html 页面的文本,但我需要从中提取整个 html 代码。

有没有人用过这个库并且知道如何提取 HTML 代码?

您可以查看demo page 了解有关图书馆的更多信息。

【问题讨论】:

    标签: java html string url extract


    【解决方案1】:

    对于像这样简单的事情,您实际上并不需要外部库:

     URL url = new URL("http://www.google.com");
     InputStream is = (InputStream) url.getContent();
     BufferedReader br = new BufferedReader(new InputStreamReader(is));
     String line = null;
     StringBuffer sb = new StringBuffer();
     while((line = br.readLine()) != null){
       sb.append(line);
     }
     String htmlContent = sb.toString();
    

    【讨论】:

    • sun.net.www.protocol.http.HttpURLConnection$HttpInputStream 无法转换为 java.lang.String
    【解决方案2】:

    只需使用KeepEverythingExtractor 而不是ArticleExtractor

    但这是在错误的工作中使用了错误的工具。您想要的只是下载 URL 的 HTML 内容(对吗?),而不是提取内容。那么为什么要使用内容提取器呢?

    【讨论】:

    • KeepEverythingExtractor 不返回 HTML 代码,它返回 HTML 页面上的全文(链接,...)
    【解决方案3】:

    使用 Java 7 和 Scanner 的技巧,您可以执行以下操作:

    public static String toHtmlString(URL url) throws IOException {
        Objects.requireNonNull(url, "The url cannot be null.");
        try (InputStream is = url.openStream(); Scanner sc = new Scanner(is)) {
            sc.useDelimiter("\\A");
            if (sc.hasNext()) {
                return sc.next();
            } else {
                return null; // or empty
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-08
      • 1970-01-01
      • 2022-01-26
      • 2012-06-07
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多