| 2008-08-19 05:01:26 | Ответить |
|---|---|
|
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. Расскажите, как аунтефицировать бота? Заранее благодарен за потенциальные ответы!! Спасибо!!! ЗЫ: классный форум, просто-таки русское РоР-коммьюнити. :) |
|
| html, http, parser |
| 2008-08-19 10:01:12 | Ответить |
|---|---|
|
Ruslan Voloshin Адрес: odessa Сообщений: 1294 Регистр: 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 запросы ты получишь ответ примерно с таким содержанием Думаю это то что тебе нужно Занимаюсь вебом и продвижением сайтов.
|
|
| hpricot, nethttp, parser |
| 2008-08-20 03:26:37 | Ответить |
|---|---|
|
Necros Адрес: Сообщений: 2 Регистр: 2008-08-19 его блог 0 сообщ. |
RE: Подключение к динамическому html-документу |
|
Спасибо огромное за оперативный и полный ответ! Поставил себе Firebug (кстати, в Макстоне есть нечто подобное: плагин ViewPage, но он мне такой информации не предоставил), теперь разбираюсь со всем этим и пытаюсь понять, как это релизовать на Руби. Думаю, осилю, это оказалось действительно то, что мне нужно.
Думаю, с аунтефикацией тоже теперь сам разберусь! Ну, если нет, напишу сюда снова. :) Ещё раз спасибо! |
|