Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Проанализировать HTML страницу


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

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

Автор: парторг 5.12.2005, 16:41
http://htmlunit.sourceforge.net/
есть ряд библиотек подобных этой, предназначенных для получения html-контента с сервера и его структурного разбора

Автор: Guest 5.12.2005, 16:43
http://forum.vingrad.ru/index.php?showtopic=72880

Автор: Berliner 6.12.2005, 15:17
мне надо что нибудь попроще. И еще можно ли стандартными средствами Java это сделать?
Добавлено @ 15:18
там ведь только одну букву отыскивать.

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

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

Автор: Berliner 7.12.2005, 10:38
Цитата
ну, если структуру 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
    }
       
}


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

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

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


офф - блин, в http://forum.vingrad.ru/index.php?showtopic=72880 кто-нть постить буит? smile

Автор: Berliner 7.12.2005, 16:32
Я тебе в личку написал

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

Автор: Souljah 7.12.2005, 18:39
шли на enzell at gmail com
отошлю если успею

Автор: Souljah 7.12.2005, 19:09
короче так:
можешь не слать; в ближайшую неделю меня в нете не будет
кидаю пример
допустим, я ищу в яндексе слово "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 запросов
удачи

Автор: Berliner 9.12.2005, 12:10
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("ошибка подключения");
   }
   
   
   }
   
                }
   


кто нить знает где хелп взять -хочу инфу о классах и что дальше делать как там че написать чтобы букву на странице нашла?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)