Доброго всем времени суток!
Я новичок в программировании на Яве, поэтому просьба сильно не пинать
Есть следующая задача. Пользователь вводит в текстовое поле слово и нажимает кнопку "Поиск". При нажатии необходимо полезть в гугл и сохранить на диск первые 3 страницы с результатами поиска по этому слову. Например, если пользователь вводит слово "Телепрограмма", то действия программы будут аналогичны действиям человека, который открыл
www.google.com, написал в строке поиска слово "Телепрограмма" и, нажав кнопку "Поиск", сохранил первые три страницы результатов.
Пытался юзать класс
URL из пакета
java.net. Загружает странички нормально, однако при попытке имитировать поисковый запрос (например получить страничку с адресом
"http://www.google.com.ua/search?q=TV&hl=ru&start=10"), возвращает ошибку 403.
Что посоветуете
Здравствуйте, Аноним, Вы писали:
А>Что посоветуете
Некоторое время назад была такая штука как
Google Search API — SOAP сервис который умел возвращать результаты поиска. В конце 2006 его прикрыли. Что выглядит довольно логичным так как Гугл живет за счет кликов на рекламе.
Отсюда вывод что Гугл будет всячески противиться любым попыткам получить из него результаты программным путем (т.н. scraping'у). Отсюда и 403 (он же Forbidden), отсюда же могут быть и блокировки IP адреса, отсюда же теоретически могут быть и судебные иски (формально scraping нарушает Term of Service, пункт 5.3). Так что если решение и есть, оно технически сложно и ненадежно (скорее всего Гугл меняет применяемую защиту).
А>Что посоветуете
Первое что вам надо будет решить — это юридические вопросы. Максимум, что позволено сейчас это:
http://code.google.com/apis/ajaxsearch/
Здравствуйте, Аноним, Вы писали:
А>Что посоветуете
(если не касаться юр. вопросов)
Попробуйте воспользоваться
Commons HttpClient. Намного удобнее стандартного решения от Sun. Сам работать так с гуглой не пробовал, но мне кажется если установить в качестве user-agent'a что нить типа Mozilla (смотрите API) запрос на поиск пройдёт.
Здравствуйте, Аноним, Вы писали:
А>Пытался юзать класс URL из пакета java.net. Загружает странички нормально, однако при попытке имитировать поисковый запрос (например получить страничку с адресом "http://www.google.com.ua/search?q=TV&hl=ru&start=10"), возвращает ошибку 403.
А>Что посоветуете
гугл не единственный поисковик на свете. Может стоит посмотреть на альтернативные? вдруг они еще веб сервисы свои поддерживают....
Здравствуйте, Zelgadis, Вы писали:
Z>Попробуйте воспользоваться Commons HttpClient. Намного удобнее стандартного решения от Sun. Сам работать так с гуглой не пробовал, но мне кажется если установить в качестве user-agent'a что нить типа Mozilla (смотрите API) запрос на поиск пройдёт.
ИМХО, когда начнется несколько десятков запросов в секунду с одного IP, забанят без шуток.
Спасибо всем за помощь. Что-нибудь будем думать.