Найти - Пользователи
Полная версия: Камасутра с парсингом
Начало » Web » Камасутра с парсингом
1
Enchantner
Сейчас пытаюсь написать парсер для сайта 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. Кто-нибудь может посоветовать, как не сломать голову, но добиться универсального результата? Неужели придется разбирать этот ужасный яваскрипт?
poltergeist
Тут лучше всего создать нормальное окружение браузера с помощью QtWebKit/WebKitGtk и парсить уже отрендеренный контент. С помощью JS можно и не парсить, а выдрать из DOM-а браузера по селектору. Кстати в Qt 4.6 это можно сделать и без JS, в питоне (http://doc.qt.nokia.com/4.6/webkit-domtraversal.html).
Enchantner
poltergeist
проблема в том, что от меня хотят красивую кнопочку в админке джанги с большой надписью “сделать красиво”, по которой контент окажется в базе…
poltergeist
ну и что? это вполне реально сделать на сервере так, как я написал. QtWebKit будет работать и на сервере, ему десктопное окружение не нужно, никаких окон с браузером открывать не надо, если что, думаю хватит и этого: http://linux.die.net/man/1/xvfb (сам не пробовал ещё). Просто весь контент того сайта генерится джаваскриптом, а самым универсальным способом будет именно имитация настоящего браузера, так что другого выхода я не вижу.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB