Как сделать парсер на python учитывая что переход по страницам осуществяется на javascript?

Добрый день!
Я только начал разбирать python и о нем мало что знаю.
Столкнулся с такой проблемой на примере статьи gis-lab.info/qa/scrapy.html сделал парсер, но когда начал переделывать под свои нужды а именно:
Сделать парсер сайта https://bankrot.fedresurs.ru/ArbitrManagersList.aspx для получения всех FIO и URL увидел что все постраничная навигация осуществляется методом ajax запроса. Как можно сделать парсер использую python? Заранее спасибо!
  • Вопрос задан
  • 2465 просмотров
Решения вопроса 1
@nirvimel
В данном случае достаточно установить печенку AmListSearch в значение PageNumber=N, запросить станицу по этому же адресу и получить в ответе список, открытый сразу со страницы N.
Например:
$ curl --cookie "AmListSearch=PageNumber=12" https://bankrot.fedresurs.ru/ArbitrManagersList.aspx > bankrot.html
$ firefox bankrot.html

А вообще, в подобных случаях следует действовать по примерно такому алгоритму:
  1. Через FireBug (или встроенную панель разработчика Tools->Web_Developer->Network) отловить исходящий HTTP-запрос на действие, вызывающее подгрузку AJAX-контента.
  2. Определить через какой параметр передается переменная (номер страницы, например). Это может оказаться не только параметр GET-запроса, но и поле POST-формы, или печенка, или даже произвольный кастомный HTTP-заголовок.
  3. Определить формат и структуру ответа. Это может быть произвольный HTML-фрагмент (чаще всего), или целый HTML-документ, или XML, или JSON (самый правильныйЪ вариант с точки зрения разработки), или вообще произвольный текстовый формат, который парсится скриптом после получения (именно такой бредовый формат имеем в данном случае, я даже не стал его разглядывать, сразу попробовал обходные пути и нашел же один).
  4. Написать скрипт, который формирует запросы, подобные тем, что уходят со страницы, и парсит ответы.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@bioroot
В качестве альтернативы в теории можно прикрутить PhantomJS в качестве webdriver для Selenium. Правда сам не пробовал. Когда была задача по парсингу сайтов, то мне было проще пересесть напрямую за PhantomJS/SlimerJS. Но там было много сайтов с похожей структурой и не было возможности руками разбираться где есть ajax, а где нет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы