как взять текст заголовка с любой веб-страницы в Java - PullRequest
2 голосов
/ 07 мая 2011

Я использую Java для получения текста заголовка с веб-страницы.

Я получил изображение с веб-страницы, используя имя тега следующим образом:

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

Это работает, но я хочу получить тег заголовка с веб-страницы (www.yahoo.com), используя тот же код как и выше. Я упомянул getElementsByTagName ("title"); Но это не работает. Пожалуйста, помогите мне, как это сделать с помощью jtidy parser, как указано выше.

Ответы [ 4 ]

2 голосов
/ 07 мая 2011

Обратите внимание, что индекс NodeList начинается с 0 (я вижу ваше "int i = 1;") http://download.oracle.com/javase/1.4.2/docs/api/org/w3c/dom/NodeList.html.

Кроме того, вы можете "getNodeValue ()" атрибута (т.е. "src"), но не элемента http://download.oracle.com/javase/1.5.0/docs/api/org/w3c/dom/Node.html. В этом случае вы можете использовать "getTextContent ()", потому что я не верю, что тег "title" имеет дочерние элементы.Итак:

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

Или:

String titleText = doc.getElementsByTagName("title").item(0).getFirstChild().getNodeValue(); 
1 голос
/ 07 мая 2011

Вы можете легко получить заголовок HTML-страницы, используя XPath:

/html/head/title/text()

Вы можете легко добиться этого с Dom4J , и я думаю, что и в JTidy.

0 голосов
/ 30 апреля 2019

Попробуйте,

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();
        }
    }
0 голосов
/ 07 мая 2011

Мы не можем сказать, пока вы не отправите код, который вы действительно используете для получения заголовка, но это явно не сработает:

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

, поскольку элемент titleимеют атрибут src.

...