парсинт html страницы по примеру

Ответить
DeMoZ
Сообщения: 17
Зарегистрирован: 26 мар 2013, 05:10

парсинт html страницы по примеру

Сообщение DeMoZ » 01 сен 2013, 07:04

отыскал в интернетах код, который парсит данные с сайта и выдает опеределенное значение.

Код: Выделить всё

public String GetTemper(String urlsite)
    {
        String matchtemper = "";
        try
        {
                // загрузка страницы
            URL url = new URL(urlsite);
            URLConnection conn = url.openConnection();
            InputStreamReader rd = new InputStreamReader(conn.getInputStream());
            StringBuilder allpage = new StringBuilder();
            int n = 0;
            char[] buffer = new char[1000];
            while (n >= 0)
            {
                n = rd.read(buffer, 0, buffer.length);
                if (n > 0)
                {
            Log.d("my log","if(n>0)");    	
                    allpage.append(buffer, 0, n);                    
                }
            }
            // работаем с регулярками
            final Pattern pattern = Pattern.compile("([\\S+?\\s\\p{P}]{1,})<title>([\\S+?\\s\\p{P}]{1,})</title>([\\S+?\\s\\p{P}]{1,})");
            
            Matcher matcher = pattern.matcher(allpage.toString());
            if (matcher.find())
            {    
                matchtemper = matcher.group(1);            
            }        
            return matchtemper;
        }
        catch (Exception e)
        {
            
        }
        return matchtemper;  
    };
решил, что достаточно вставить ссылку на интересный мне сайт и вписать свой запрос для парсинга и получить нужные данные, но это не срабатывает. Сам запрос проверял, парся им строку, которая, выглядит очень похоже на штмл код сайта.
так понимаю что за загрузку кода сайта отвчает этот блок

Код: Выделить всё

URL url = new URL(urlsite);
            URLConnection conn = url.openConnection();
            InputStreamReader rd = new InputStreamReader(conn.getInputStream());
            StringBuilder allpage = new StringBuilder();
            int n = 0;
            char[] buffer = new char[1000];
            while (n >= 0)
            {
                n = rd.read(buffer, 0, buffer.length);
                if (n > 0)
                {
            Log.d("my log","if(n>0)");    	
                    allpage.append(buffer, 0, n);                    
                }
            }
и суть блока мне понятна, не понятно лишь почему это не работает.
пытался вставить Log.d("",""); в цыкл и условие, но логи не появляются.
Как проверить осуществляется ли загрузка страницы, так как не ясно в каком месте что не работает.
ссылка на статью исходникhttp://habrahabr.ru/post/109944/
не хотелось бы прибегать к библиотекам для парсинга.

Аватара пользователя
mozilalvfg
Сообщения: 85
Зарегистрирован: 10 авг 2013, 18:46

Re: парсинт html страницы по примеру

Сообщение mozilalvfg » 01 сен 2013, 15:27

char[] buffer = new char[1000]; так бить неможет
http://ru.wikipedia.org/wiki/Символьный_тип
Из средств, расширяющих сознание, я признаю только книги и немного пива!
____________________________________________________________________
IntelliJ IDEA 12. Win 7 x64 sp1
KSWEB: сервер + PHP + MySQL FREE
Изображение

Ответить