Уведомления

Группа в Telegram: @pythonsu

#1 Май 18, 2010 23:57:50

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

Камасутра с парсингом

Сейчас пытаюсь написать парсер для сайта http://www.jr.com/, проблема в том, что нужный мне контент подгружается аяксом. Выглядит сам линк примерно так:

<a href="#ReviewHeader" onclick="POWERREVIEWS.display.getReviewsFromMeta(2, 'HP_P6240F_hy_RB', 'en_US', 'engine-HP_P6240F_hy_RB-en_US', POWERREVIEWS.common.getOptions('engine-HP_P6240F_hy_RB-en_US')); return false;">Next »</a>
В результате идет запрос на /reviews/pwr/content/04/15/HP_P6240F_hy_RB-en_US-1-reviews.js , который возвращает дикого вида яваскрипт с нужным мне контентом. Проблема в том, что я понятия не имею, откуда берутся цифры /04/15 , а парсер должен быть универсальным. Единственное, что могу предположить - это то, что во всем замешан файлик http://www.jr.com/reviews/pwr/engine/js/full.js , в котором дикий код на яваскриптах и ужасно запутанное описание того самого объекта POWERREVIEWS. Кто-нибудь может посоветовать, как не сломать голову, но добиться универсального результата? Неужели придется разбирать этот ужасный яваскрипт?



Офлайн

#2 Май 21, 2010 17:45:03

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

Камасутра с парсингом

Тут лучше всего создать нормальное окружение браузера с помощью QtWebKit/WebKitGtk и парсить уже отрендеренный контент. С помощью JS можно и не парсить, а выдрать из DOM-а браузера по селектору. Кстати в Qt 4.6 это можно сделать и без JS, в питоне (http://doc.qt.nokia.com/4.6/webkit-domtraversal.html).



Отредактировано (Май 21, 2010 17:45:37)

Офлайн

#3 Май 21, 2010 23:23:04

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

Камасутра с парсингом

poltergeist
проблема в том, что от меня хотят красивую кнопочку в админке джанги с большой надписью “сделать красиво”, по которой контент окажется в базе…



Офлайн

#4 Май 22, 2010 21:46:54

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

Камасутра с парсингом

ну и что? это вполне реально сделать на сервере так, как я написал. QtWebKit будет работать и на сервере, ему десктопное окружение не нужно, никаких окон с браузером открывать не надо, если что, думаю хватит и этого: http://linux.die.net/man/1/xvfb (сам не пробовал ещё). Просто весь контент того сайта генерится джаваскриптом, а самым универсальным способом будет именно имитация настоящего браузера, так что другого выхода я не вижу.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version