【问题标题】:How can I get the page title information from a URL in Java? [duplicate]如何从 Java 中的 URL 获取页面标题信息? [复制]
【发布时间】:2017-02-27 04:55:33
【问题描述】:

所以我使用 JSP 语言进行编码,但我需要在 java servlet 中执行此操作。我在 java 程序(servlet)中有一种方法可以获取用户输入的 URL。我将 URL 存储在一个字符串中。现在剩下要做的就是从 URL 或网站获取页面标题信息。本质上,我想从 URL 获取 html 代码中的标题标签。我以前从来没有这样做过,所以我想知道是否有人可以给我一些关于如何做到这一点的指示。

例如,假设我想从http://www.computerhope.com/issues/ch000746.htm 获取页面标题

当我查看 html 代码时,它显示它是“如何查看网页的 HTML 源代码”,如 html 代码所示。

如何查看网页的HTML源代码

那么我怎样才能在 java 程序中访问它呢?

【问题讨论】:

  • 标题不是 URL 的一部分,它是实际 HTML 页面的一部分。因此,您必须阅读 HTML 页面。
  • 好的,谢谢。看起来好像我必须使用一个名为 URLconnection 的类来访问信息。
  • 是的。查看 MKYong 教程以帮助您入门。
  • String title = Jsoup.connect(url).get().title();

标签: java html jsp servlets


【解决方案1】:

试试这个。

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Scanner;

public class URLTest {

public static void main(String[] args) {
    InputStream response = null;
    try {
        String url = "http://www.google.com";
        response = new URL(url).openStream();


        Scanner scanner = new Scanner(response);
        String responseBody = scanner.useDelimiter("\\A").next();
        System.out.println(responseBody.substring(responseBody.indexOf("<title>") + 7, responseBody.indexOf("</title>")));

    } catch (IOException ex) {
        ex.printStackTrace();
    } finally {
        try {
            response.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}
}

【讨论】:

  • 天哪,这就像一个魅力。非常感谢!我想我现在明白该怎么做了。
【解决方案2】:

您可以使用 javascript 获取 html page title 的值并将该值设置为 hidden form field,稍后从 HTTP request parameter 检索该值,如下所示:

HTML 页面:

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>My page</title>
</head>
<body>
<form action="a" onsubmit="return setPageTitle()" method="post">
    <input type="hidden" name="pageTitle" id="pageTitle">
    <input type="submit" value="Go"/>
</form>
<script type="text/javascript">
   function setPageTitle(){
     document.getElementById("pageTitle").value=document.title;
    }
</script>   
</body>
</html>

Servlet 代码:

String title=request.getParameter("pageTitle");

【讨论】:

    【解决方案3】:

    搜索 html 字符串的问题是标题标签也可能在评论中。 XmlParser 不起作用。但是 JDK 中的一些东西是从过去的 Swing 时代开始的:

        public static void main(String[] args) throws Exception {
            HTMLEditorKit htmlKit = new HTMLEditorKit();
            HTMLDocument htmlDoc = (HTMLDocument) htmlKit.createDefaultDocument();
            HTMLEditorKit.Parser parser = new ParserDelegator();
            parser.parse(new InputStreamReader(new URL("https://stackoverflow.com/questions/40099397/how-can-i-get-the-page-title-information-from-a-url-in-java/40099983").openStream()),
                    htmlDoc.getReader(0), true);
    
            System.out.println(htmlDoc.getProperty("title"));
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-06
      相关资源
      最近更新 更多