Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Парсинг HTML, Заюзал код, а он не работает 
:(
    Опции темы
headzero
Дата 23.9.2008, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 14.11.2006

Репутация: нет
Всего: 1



Для выделения ссылок на строке использую код, который нашел на винграде
Код

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.ElementIterator;
import javax.swing.text.html.HTML;
import javax.swing.text.html.HTMLDocument;
import javax.swing.text.html.HTMLEditorKit;
import javax.swing.text.*;

class Net {
    static HTMLDocument m_doc = null;

    public static void main(String[] args) throws IOException {
        
        HTMLEditorKit m_kit = new HTMLEditorKit();
        URL ura = new URL("http://forum.vingrad.ru");
        
        try {
            InputStream in = ura.openStream();
            m_doc = (HTMLDocument) m_kit.createDefaultDocument();
            m_kit.read(in, m_doc, 0);
        } catch (BadLocationException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        
        //Получение атрибутов тега <A>
        HTMLDocument.Iterator it = m_doc.getIterator(HTML.Tag.A);
        while (it.isValid()) {
            AttributeSet attrs = it.getAttributes();
            String linkAttr = (String)attrs.getAttribute(HTML.Attribute.HREF);
            links.add(linkAttr);
            //System.out.println(linkAttr);
            it.next();        
        }

        /*Получение атрибутов тега <IMG>
        ElementIterator elit = new ElementIterator(m_doc);
        Element elem;
        while ((elem = elit.next()) != null) {
            if (elem.getName().equals("img")) {
                AttributeSet attrs2 = elem.getAttributes();
                Object scr = attrs2.getAttribute(HTML.Attribute.SRC);
                System.out.println(scr);
            }
        }*/
    }
    }


Но на строке 
Код
  m_kit.read(in, m_doc, 0); 
 получаю ексепшнjavax.swing.text.ChangedCharSetException и плюс isValid становиться всегда false. Что подскажите?Спасибо

P.S Статью Платона про парсинг  ссылок читал. Она мне не подходит. Другие статьи тоже.

Это сообщение отредактировал(а) headzero - 23.9.2008, 10:42


--------------------
Воображение важнее знания
                                                     (Алберт Эйнштейн)
PM MAIL   Вверх
Platon
Дата 23.9.2008, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



А чем моя статья html парсера не устраивает?
PM MAIL ICQ   Вверх
headzero
Дата 23.9.2008, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 14.11.2006

Репутация: нет
Всего: 1



Статья клевая,  smile но нужно как можно меньше энерго-памято-ресурсо-времени затрат на поиск ссылок. Они мне не нужны как обьекты, только как промежуточные строки.


--------------------
Воображение важнее знания
                                                     (Алберт Эйнштейн)
PM MAIL   Вверх
Platon
Дата 23.9.2008, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



Если заглянуть в код парсера, можно увидеть, что ему не нравится заголовок Content-Type, возможно из-за того, что требуется строгое соответствие text/html, а форум шлет Content-Type: text/html; charset=UTF-8

Добавлено через 2 минуты и 9 секунд
Цитата(headzero @  23.9.2008,  11:40 Найти цитируемый пост)
но нужно как можно меньше энерго-памято-ресурсо-времени затрат на поиск ссылок. Они мне не нужны как обьекты, только как промежуточные строки. 

headzero, бугага!!! тогда моя статья - то что доктор прописал, ибо в отличие от твоего приведенного кода, ты можешь не хранить их в памяти а сразу отстреливать. А в твоем примере строится полное дерево HTML тегов!!! Обрати внимание.

Добавлено через 4 минуты и 56 секунд
headzero, ты программист, а не копи/пиастер © подкорректируй код в статье так, чтобы в поток выдавался не объект, а только строка.
PM MAIL ICQ   Вверх
headzero
Дата 23.9.2008, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 14.11.2006

Репутация: нет
Всего: 1



Platon, я пока не программист smile Только учусь. Твои замечания возьму на заметку smile 


--------------------
Воображение важнее знания
                                                     (Алберт Эйнштейн)
PM MAIL   Вверх
Platon
Дата 23.9.2008, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



Цитата(headzero @  23.9.2008,  11:40 Найти цитируемый пост)
Статья клевая,  smile

Если статья понравилась, тогда можно поддержать автора.

Добавлено через 6 минут и 15 секунд
Цитата(headzero @  23.9.2008,  10:54 Найти цитируемый пост)
Другие статьи тоже.


Как же ты так читал другие? http://forum.vingrad.ru/index.php?showtopi...st&p=177875 вот ответ на твой вопрос.
PM MAIL ICQ   Вверх
headzero
Дата 23.9.2008, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 14.11.2006

Репутация: нет
Всего: 1



Спасибо. Да я эту читал. Так и сделал. Щас работает. А как поддержать автора?


--------------------
Воображение важнее знания
                                                     (Алберт Эйнштейн)
PM MAIL   Вверх
Platon
Дата 23.9.2008, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



И нашел я ее на этой же странице в разделе "А здесь смотрели?"

Добавлено через 56 секунд
На форуме свое уважение/неуважение выражают поднятием/понижением репутации
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0506 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.