how to take title text from any web page in java

让人想犯罪 __ 提交于 2019-12-10 11:17:42

问题


I am using java to fetch the title text from web page.

I have fetched image from web page using Tag name as follows:

    int i=1; 
InputStream in=new URL("www.yahoo.com").openStream();
org.w3c.dom.Document doc= new Tidy().parseDOM(in, null);   
    NodeList img=doc.getElementsByTagName("img");
ArrayList<String> list=new ArrayList<String>();                   
    list.add(img.item(i).getAttributes().getNamedItem("src").getNodeValue());

It is working,But I want to fetch title tag from web page(www.yahoo.com) using same code as above.I have mentioned getElementsByTagName("title"); but it is not working. Please help me,how to do that using jtidy parser as above.


回答1:


Watch that the NodeList index starts at 0 (i see your "int i = 1;") http://download.oracle.com/javase/1.4.2/docs/api/org/w3c/dom/NodeList.html.

Also, you can "getNodeValue()" of an Attribute (ie "src"), but not of an Element http://download.oracle.com/javase/1.5.0/docs/api/org/w3c/dom/Node.html. In this case you can use "getTextContent()", because I dont believe the "title" tag has child Elements. So:

String titleText = doc.getElementsByTagName("title").item(0).getTextContent(); 

Or:

String titleText = doc.getElementsByTagName("title").item(0).getFirstChild().getNodeValue(); 



回答2:


You can fetch the title of an HTML page easily using an XPath:

/html/head/title/text()

You can achieve this easily with Dom4J, and I think in JTidy as well.




回答3:


Wee can't tell unless you post the code you are actually tyring to use to get the title, but this clearly won't work:

    list.add(img.item(i).getAttributes().getNamedItem("src").getNodeValue());

because the title element doesn't have a src attribute.




回答4:


Try this,

InputStream response = null;
    try {
        String url = "http://example.com/"; // specify the URL
        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>"))); // it fetches the text inside the title tag

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


来源:https://stackoverflow.com/questions/5919476/how-to-take-title-text-from-any-web-page-in-java

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!