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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проанализировать HTML страницу, вопрос 
:(
    Опции темы
Berliner
Дата 5.12.2005, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вот такая задача: есть сайт, который показывает состояние пяти устройств. Если устройство работает – показывает в Колонке таблицы букву Y , а если устройство не работает показывает букву N. Когда какое либо устройство не работает нада чтобы комп ьютер например запищал. как решить такую задачу подскажите алгоритм, пожалуста. Например я думаю подключаться к серверу раз в 3 минуты и анализировать страницу , нахожу букву N и если есть буква N- то пищу. Но я не умею анализировать HTML страницу. Подскажите какие классы и методы использовать при анализе HTML страниц. А я по хелпу посмотрю об этих классах и методах. И можно анализировать HTML страницу не открывая браузер? Мне лучше чтобы не открывать браузер.

P.S. Буквы Y или N всегда находятся в одном месте(не плавают). Там что -то типа таблицы

Это сообщение отредактировал(а) Berliner - 7.12.2005, 16:26
PM   Вверх
парторг
Дата 5.12.2005, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



http://htmlunit.sourceforge.net/
есть ряд библиотек подобных этой, предназначенных для получения html-контента с сервера и его структурного разбора
PM MAIL   Вверх
Guest
Дата 5.12.2005, 16:43 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











  Вверх
Berliner
Дата 6.12.2005, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



мне надо что нибудь попроще. И еще можно ли стандартными средствами Java это сделать?
Добавлено @ 15:18
там ведь только одну букву отыскивать.
PM   Вверх
Dancer
Дата 6.12.2005, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 29.4.2005
Где: Nizhniy Novgorod

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



ну, если структуру html странички знаешь, то можешь просто отсчитать нужное количество <td> после <tr> и проверять букву из <td>Y/N</td>
далее к новой <tr> и всё заново.


--------------------
У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! smile
PM MAIL   Вверх
парторг
Дата 6.12.2005, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



..но это будет только сложнее. я серьезно.
потрать пару часов, разберись с библиотечкой - там ничего ужасного нет.. =)

Это сообщение отредактировал(а) парторг - 6.12.2005, 22:07
PM MAIL   Вверх
Berliner
Дата 7.12.2005, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата
ну, если структуру html странички знаешь, то можешь просто отсчитать нужное количество <td> после <tr> и проверять букву из <td>Y/N</td>
далее к новой <tr> и всё заново.

А подскажите методы каких классов использовать при анализе страницы
хотелось бы простенький пример.
Вот что я написал. Правда не знаю дальше как анализировать страницу.
И не знаю почему не отображается содержимое интернет страницы в результате исполнения этого кода. Просто интересно почему не отображается страница?
Код

public class istr {
   
    
    /** Creates a new instance of Main */
    
    public istr() {
         
    JEditorPane htm=new JEditorPane();
    try{
    
    htm.setContentType("text/html"); //тип просмотра HTML страницы
    htm.setEditable(false);
    htm.setPage(new URL("http://www.yahoo.com")); //загружаем страницу 
    System.out.println("пытаюсь подключиться");
    htm.setVisible(true);
       }
    catch(IOException e2)
    
    {
    System.out.println("Не удалось открыть страницу поиска");                     
    }
                  }

    public static void main(String[] args)  {
    istr istr1=new istr();        
        
    
                               // TODO code application logic here
    }
       
}


Цитата
потрать пару часов, разберись с библиотечкой - там ничего ужасного нет
Спасиб,паралельно буду пытаться разобраться с данной библиотекой.
PM   Вверх
Souljah
Дата 7.12.2005, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



напиши, с какого ресурса (если паблик) чего хочешь выдирать
или приаттачь хтмл

если часов где-то до 14.00 (GMT + 02) успеешь - скину пример для JTidy+xPath - там все гораздо проще чем кажется, потом с xPath не слезешь smile


офф - блин, в мой топик кто-нть постить буит? smile
PM MAIL   Вверх
Berliner
Дата 7.12.2005, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Я тебе в личку написал
PM   Вверх
Berliner
Дата 7.12.2005, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Никто не знает почему не отображается страница в результате исполнения моего кода?+ smile анализа страницы- как отследить какая буква (Y или N) стоит в определенном месте на странице

Это сообщение отредактировал(а) Berliner - 7.12.2005, 17:23
PM   Вверх
Souljah
Дата 7.12.2005, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



шли на enzell at gmail com
отошлю если успею
PM MAIL   Вверх
Souljah
Дата 7.12.2005, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



короче так:
можешь не слать; в ближайшую неделю меня в нете не будет
кидаю пример
допустим, я ищу в яндексе слово "test", и хочу получить значение первой ссылки.
код выглядит так:

Код

import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.tidy.Tidy;

import com.sun.org.apache.xpath.internal.XPathAPI;

public class Sample {

    /**
     * @param args
     */
    public static void main(String[] args) throws Exception {
        System.setProperty("http.proxyHost", "your.proxy.host.com");
        System.setProperty("http.proxyPort", "3128");
        URL url = new URL("http://www.yandex.ru/yandsearch?text=test");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        StringBuffer result = new StringBuffer();
        String tmp = null;
        BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        while((tmp = br.readLine()) != null) {
            result.append(tmp);
        }
        br.close();
        Tidy tidy = new Tidy();
        tidy.setFixBackslash(true);
        tidy.setMakeClean(true);
        tidy.setXmlOut(true);
        tidy.setShowWarnings(false);
        Document dom = tidy.parseDOM(new ByteArrayInputStream(result.toString().getBytes()), null);
        Node node = XPathAPI.selectSingleNode(dom, "/html/body/ol/li/div/a/@href");
        System.out.println(node.getNodeValue());
    }

}





качни jTidy, поищи примеры xPath запросов
удачи
PM MAIL   Вверх
Berliner
Дата 9.12.2005, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



to Парторг
http://htmlunit.sourceforge.net/

Выкачал разбираюсь- но что-то я не пойму одну вещь. У них что нету хелпа который рассказывает про ихни классы и методы? и если есть то где? На сайте и встроеном html хелпе я не нашел. Так есть только пару маленьких примеров о использовании их библиотеки?

Вот нацарапал даже немного кода а как анлизировать отыскивать букву? Нету хелпа нормального или я не нахожу хелп....

Вот что я написал
вот эта строка выдает ошибку- assertEquals( "htmlunit - Welcome to HtmlUnit", page.getTitleText());


а почему нельзя так например создать экземпляр класса ? Htmlpage page=new HtmlPage(adr);
а так можно?

Код

class htmlp {
   public  htmlp(){
       
   WebClient webclient=new WebClient();
   try {
   URL adr=new URL("http://www.proj.pib.com.ua/?page=1&body=podrob");
   // вот эта строка выдает ошибку assertEquals( "htmlunit - Welcome to HtmlUnit", page.getTitleText());
   
        try{
        webclient.getPage(adr);
      
       // HtmlPage page = (HtmlPage)webclient.getPage(adr);
       //а почему нельзя так например создать экземпляр класса ? Htmlpage page=new HtmlPage(adr); 
       
           }
        catch(IOException e2){
        System.out.println("Проверте правильность написания ссылки");                     
                             }
       }
   
   catch(MalformedURLException e1)
   {
     
   System.out.println("ошибка подключения");
   }
   
   
   }
   
                }
   


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

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

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


 




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


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

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