所以我用JSP语言编写代码,但我需要在java servlet中执行此操作。我在java程序(servlet)中有一个方法来获取用户输入的URL。我将URL存储在一个字符串中。现在剩下要做的就是从URL或网站获取页面标题信息。基本上我想从URL中获取html代码中的标题标记。我之前从未这样做过,所以我想知道是否有人能给我任何关于如何做到这一点的指示。
例如,假设我想从http://www.computerhope.com/issues/ch000746.htm
获取页面标题当我查看html代码时,它会显示“如何查看网页的HTML源代码”,如html代码所示。
< title>如何查看网页的HTML源代码< / title>
那么我怎样才能在java程序中访问它?
答案 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"));
}