![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Dean |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 10.2.2008 Репутация: нет Всего: нет |
Всем привет.
Моя задача такая: залогиниться на сайт, перейти по паре ссылок, ввести данные для поиска в форму и скачать документ, который вернут по результатам поиска. У меня пока получилось только зайти на первую страницу сайта, но как вбить туда логин, пароль и нажать кнопку "login" я не знаю, и как потом пойти по нужной мне ссылке тоже. ![]() Для этого надо выполнить несколько GET/POST запросов или можно объединить некоторые действия? И как послать несколько запросов серверу подряд? Протокол HTTP 1.1. Может кто подскажет? Если можно по-проще, для чайника ![]() |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
В простейшем случа будет так: 1. Анализируем форму логина и выясняем какие поля (имена) и каким образом (GET/POST/AJAX) отправляются на сайт. 2. С помощью HttpClient отправляем запрос с логином и паролем на сайт, в ответ мы получим страничку и куку с сессией. 2а. Возможно надо будет выставить правильный UserAgent. 3. Дальше скачиваем нужные HTML странички, парсим и ищем нужные ссылки, потом по ним опять скачиваем HTML или файлы, смотря что там надо. Хотя в принципе возможно еще придется с JavaScript-ом повозиться или еще с чем-то таким же приятным, если сайт защищается от ботов. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Akeem |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 14.7.2006 Где: Киев/Украина Репутация: нет Всего: 3 |
Я бы посоветовал использовать селениум (Selenium) и не парится. Пару строк кода и все.
-------------------- Мир огромен и мы только муравьи в нём! (С) formicha |
|||
|
||||
SergeyFromUkraine |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 21.4.2007 Репутация: нет Всего: нет |
Dean , у тебя есть несколько возможностей , которые отличаются трудоемкостью.
1) наиболее трудоемкий способ - эмулировать действия на уровне HTTP протокола, то есть отсылать HTTP GET POST запросы, помнить про Cookies и Referer хеадеры. 2) Есть библиотека HtmlUnit - эмулирует действия на уровне пользователя HtmlUnit Getting Started , тоесть предоставляет API для загрузки страницы , поиска элементов интерфеса(input , anchors, buttons) И нажатие на них (click, submit) . Частично поддерживает JavaScript. 3) Есть еще Selenium - аналогичен HtmlUnit , но действия навигации и прочего выполняют уже не java классы, а настоящий браузер ,которым управляет Selenium . Полностью поддерживает JavaScript, ибо браузер. Selenium чуть медленнее HtmlUnit из-за того, что нужно запускать браузер. Также хорошо бы установить Firebug (аддон для Firefox) или его аналоги для других браузеров. Во первых, в нем есть вкладка Network - в которой будет показан HTTP обмен между браузером и сервером. Во вторых используя Inspect Element и вкладку HTML - можно легко подобрать признаки, по которым искать элементы если будешь использовать HtmlUnit или Selenium (имя , атрибуты, id, xpath). |
|||
|
||||
Dean |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 10.2.2008 Репутация: нет Всего: нет |
Спасибо всем за советы
![]() С GETами и POSTами не совсем понятно что и как делать. Пока получилось сделать с помощью WebDriver. Только можно ли сделать чтоб окно браузера не выскакивало каждый раз при запуске? |
|||
|
||||
Akeem |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 14.7.2006 Где: Киев/Украина Репутация: нет Всего: 3 |
Dean,
Как с WebDriver так и с Selenium (так как первый уже включен в новую версию второго) такое не получится. Так как оба спроектированы чтобы броузер выскакивал. Такое можно было провернуть с HttpUnit. Либо поробывать использовать WEbDriver как:
Сам такого не делал, точно не скажу. -------------------- Мир огромен и мы только муравьи в нём! (С) formicha |
|||
|
||||
Dean |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 10.2.2008 Репутация: нет Всего: нет |
Akeem, получилось - окно браузера больше не выскакивает
![]() только не
а
хотя может твой вариант тоже возможен, но у меня эклипс на него ругался. |
||||
|
|||||
Akeem |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 14.7.2006 Где: Киев/Украина Репутация: нет Всего: 3 |
Dean,
Я по пам"яти писал, так что мог и ошибится в названии класса ![]() *возможен если самому имплементировать интерфейс WebDriver ![]() -------------------- Мир огромен и мы только муравьи в нём! (С) formicha |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Работа с сетью | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |