如何从Java中获取URL中的页面标题信息?

时间:2016-10-18 04:14:38

标签: java html jsp servlets

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

例如,假设我想从http://www.computerhope.com/issues/ch000746.htm

获取页面标题

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

< title>如何查看网页的HTML源代码< / title>

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

3 个答案:

答案 0 :(得分:4)

试试这个。

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();
        }
    }
}
}

答案 1 :(得分:1)

您可以使用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");

答案 2 :(得分:0)

搜索html String的问题是title标签也可能在注释中。 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"));
    }