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

Поиск:

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


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 2.2.2010
Где: Винница, Украина

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



Есть задание, нужно написать прогу, которая будет отправлять в яндекс запрос, который введён в программе. Возвращать она должна 20 строк по парно в формате 

Ссылка
Краткое описание

Попытался сделать так, но дальше получаю HTML-код и не знаю что с ним делать, чтоб вытащить те строчки.

Код

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;

public class yandex {

    private String request;

    public yandex() {

        request = "наркотики"; /Например

        try {

            URL url = new URL("http://yandex.com/yandsearch?text=" + request);
            BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
            String line;
            while ((line = reader.readLine()) != null) {
                StringBuffer temp = new StringBuffer(line);
                        System.out.println(line);
            }
            reader.close();
        } catch (IOException ex) {
            Logger.getLogger(yandex.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    public static void main(String[] args) {
        new yandex();
    }
}


Также думал найти закономерности в самой странице яндекса и тупым перебором строчек найти то что нужно, но не вышло( Что подскажите?

--------------------
Так давай же, поспеши!Отыскать СВОЙ куб души!
PM MAIL ICQ   Вверх
MisterCleric
Дата 8.9.2010, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

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



Привет.
Ану посмотри здесь:
Java HTML parsers

Я в свое время взял для этого дела Cobra. Мне очень понравилось, так как там синтаксис сводиться к обработке документа в стиле JavaScript


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
soulcub
Дата 8.9.2010, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 2.2.2010
Где: Винница, Украина

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



Спасибо) Сейчас попробую кобру эту) Самое плохое, что мне надо за сегодня разобраться и отправить код) Если что - напишу сюда ещё.
--------------------
Так давай же, поспеши!Отыскать СВОЙ куб души!
PM MAIL ICQ   Вверх
Nofate
Дата 8.9.2010, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Если речь идет о ссылках в выдаче,то выглядят они примерно так:

Код

<a class="agp" tabindex="2" href="http://exlibris.ng.ru/kids/2008-07-24/7_skazka.html" onmousedown="..." target="_blank">Хрюкотунчик, <b>Шебуршунчик</b> и Бурундунчик </a>


Можно:
1. Найти вручную подстроку <a class="agp", потом пропустить все символы до ближайшего >. Запомнить место. Найти ближайшую подстроку </a>. Получить подстроку между этими двумя позициями. повторять до конца файла.

2. Тоже самое, но с автоматикой smile Пройтись регэкспом. Что-то вроде  <a class="agp"*>{1}</a> . Как ими пользоваться смотрим тут: http://download.oracle.com/javase/1.4.2/do...ex/Pattern.html

3. Отпарсить как XML при помощи SAX. Обрабатывать теги <a>, у которых атрибут class равен "agp" и выдергивать текст.

4. Отпарсить как XML при помощи DOM. Найти в дереве элементы <a>, у которых атрибут class равен "agp" и выдернуть текст.

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

ЗЫ. Долго же я писал пост ))



--------------------
The future is not set, there is no fate but what we make for ourselves.
Нофейтово пространство и смежные области 
PM MAIL WWW ICQ   Вверх
soulcub
Дата 8.9.2010, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 2.2.2010
Где: Винница, Украина

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



Согласен, в принципе.. Сам думал о том, чтоб просто вручную пройтись по коду, но меня остановила мысль.. Это ведь задания на приём на работу) Значит они ими хотят что-то проверить в моих знаниях) А тупо перебирать весь код.. Хотя.. Парсеры ведь так и делают.. Короче всё) Решился) Сделаю свой парсер именно для такой цели)


Nofate, спасибо за толчок хДД
--------------------
Так давай же, поспеши!Отыскать СВОЙ куб души!
PM MAIL ICQ   Вверх
soulcub
Дата 9.9.2010, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 2.2.2010
Где: Винница, Украина

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



Очень странно, почему-то в коде, который принимает моя прога нету комментариев к ссылкам оО Хотя в браузере они есть. В проге они просто пропускаются. Что это может быть?
--------------------
Так давай же, поспеши!Отыскать СВОЙ куб души!
PM MAIL ICQ   Вверх
soulcub
Дата 9.9.2010, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 2.2.2010
Где: Винница, Украина

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



Всё нашёл. Во всём разобрался, всё ок) Просто в коде затупил)
--------------------
Так давай же, поспеши!Отыскать СВОЙ куб души!
PM MAIL ICQ   Вверх
Nofate
Дата 9.9.2010, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ну как задание-то, приняли?


--------------------
The future is not set, there is no fate but what we make for ourselves.
Нофейтово пространство и смежные области 
PM MAIL WWW ICQ   Вверх
soulcub
Дата 10.9.2010, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 2.2.2010
Где: Винница, Украина

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



Вчера отправил) Говорили, что нужно дня 2-3, чтоб проверить ибо работы много. Ждём ответа)
--------------------
Так давай же, поспеши!Отыскать СВОЙ куб души!
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.0467 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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