Ruby On Rails in UA Icon_home Главная Add to bookmarks Translate translate Profile Войти
Регистрация Форум Блоги Пользователи Список джемов Rails проекты      Поиск   

Ruby On Rails in UA/Ruby /Подключение к динамическому html-документу

2008-08-19 05:01:26 Ответить  
Necros
Necros
Адрес:
Сообщений: 2
Регистр: 2008-08-19
его блог 0 сообщ.
Подключение к динамическому html-документу
  •  
Возникла проблема! Имеем библиотеку net/http и гору всяческих библиотек для парсинга и эмулирования браузера, из которых 90% построены на net/http (остальные 10% я просто не нашёл). Open-uri не берём, это производная от net/http. Вся эта хренотень имеет одну и ту же проблему. Они все скачивают ПЕРВУЮ, статическую версию html страницы, на которую сделан запрос. На большинстве сайтов это никаких проблем не вызывает (ну, подумаешь, будут какие-то кнопочки disabled). Но вот я встретил один сайт, парсинг с которого мне Очень нужно написать, и на нём катастрофический косяк. Весь основной контент в нём загружается *динамически*. Т.е. как и обычный "просмотр html-кода" Руби выдаёт мне пустой див. Если использовать плагины к браузеру и надстройки, можно скачать "настоящую", последнюю версию страницы, которая и отображается сейчас в браузере, из чего я делаю вывод, что на программном уровне это возможно, но я абсолютно без понятия, как такое можно сделать на Руби. Поэтому очень прошу помощи.

Платформа Винда XP (но могу и под uwin запускать, абсолютно без разницы), Руби 1.8.6, браузер Макстон. Ссылка на злополучный сайт, а именно на страницу поиска, на которой и пустует тот самый див "сёрчРезультс":
http://www.zarplata.ru/businessman/result.aspx?keywords=&locationid1=&rubricid=



И есть ещё проблема номер два. Необходимо аунтефиироваться на сайте Ruby-роботом (т.е. получить сессию и все связанные с этим привелегии и доступ к закрытой части сайта). Аккаунт имеется, но если просто посылать логин и пароль в качестве параметров к запросу на страницу, допустим (сейчас точно не помню), login.php, он (сайт) выдаёт кучу ошибок, и я примерно понимаю, что делаю что-то не то. Наверное, нужно импользовать https или что-то подобное, я без понятия. Сайт job.ru. Расскажите, как аунтефицировать бота?



Заранее благодарен за потенциальные ответы!! Спасибо!!! ЗЫ: классный форум, просто-таки русское РоР-коммьюнити. :)
, ,
2008-08-19 10:01:12 Ответить  
admin
Ruslan Voloshin
Адрес: odessa
Сообщений: 1293
Регистр: 2007-03-13
его блог 40 сообщ.
RE: Подключение к динамическому html-документу
  •  
5.0 из 1 гол.
Для начала если ты разрабатываешь на рельсах то рекомендую тебе установить Firebug - это плагин по Firefox он тебя просветит во многом а тем более поможет посмотреть как работают чужие сайты потому что на explorere ты нифига не увидишь и не отладишь.
И так вернемся к твоему сайту номер один
http://www.zarplata.ru/businessman/result.aspx?keywords=&locationid1=&rubricid=
Что бы получить данные с него тебе надо просто посмотреть как он работает.

Опять берем линейку зарплат крутим ее
смотрим что происходит на сайте
1- это отсылка данных в формате json


Во первых тебе надо будет установить реферер
и Content-Type application/json; charset=utf-8
постом передать

{"query":"type=resume&PageSize=30&ViewMode=Short&Keywords=%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%b8%d1%81%d1%82&Period=7&SortField=savedate&PriceFrom=26000"}

диапазон зарплат

В результате ты полуичшь ответ в диже JSON

{"d":{"__type":"Zarplata4.WebServices.AnnouncementResultSearch","IDs":[8579644,9407126],"Message":null}}

Гдето стоит обратить внимание на
"IDs":[8579644,9407126]

Далее яваскрипт формирует из этой последовательности
GET запрос на сайт
С такими параметрами

Где ключ id и соответствует тому диапазону который дываст тебе сайт в результате поиска
и так после GET запросы ты получишь ответ примерно с таким содержанием

Думаю это то что тебе нужно
------------
Занимаюсь вебом и продвижением сайтов.
, ,
2008-08-20 03:26:37 Ответить  
Necros
Necros
Адрес:
Сообщений: 2
Регистр: 2008-08-19
его блог 0 сообщ.
RE: Подключение к динамическому html-документу
  •  
Спасибо огромное за оперативный и полный ответ! Поставил себе Firebug (кстати, в Макстоне есть нечто подобное: плагин ViewPage, но он мне такой информации не предоставил), теперь разбираюсь со всем этим и пытаюсь понять, как это релизовать на Руби. Думаю, осилю, это оказалось действительно то, что мне нужно.

Думаю, с аунтефикацией тоже теперь сам разберусь! Ну, если нет, напишу сюда снова. :)

Ещё раз спасибо!
Назадназад Новыйновый Ответитьответить
Ключевые слова:
Гости: 126 Онлайн: 0
Rambler's Top100
О проекте по всем вопросам обращайтесь на support
Rubyclub.com.ua Copyright © 2007 - 2008