February 5, 2021

Самая важная деталь в ходе парсинга веб-страниц

На данный момент мы реализовали значительную часть нашего парсера на Python в соответствии с указанной ниже схемой:

В частности, написали функции обхода страниц (подробнее здесь), перебора ссылок на  записи на одной странице (подробнее здесь) и сбора данных по каждой ссылке на примере конкретного сайта (подробнее здесь). Также реализовали метод передачи адреса новой страницы в нестандартных ситуациях (подробнее здесь).

Принципиальным  этапом является сохранение состояния в случае возникновения исключений,  так как сайты, опасаясь проведения DDoS атак, защищаются, периодически  разрывая соединение. Поэтому на этот случай необходимо все блоки  программы, отвечающие за скачивание данных заключать в try/except с  сохранением всех промежуточных результатов. При этом новый запуск  программы должен также сопровождаться поиском сохраненного состояния для  старта с места прерывания.

Например, для случая парсинга данных о проведенных поединках по смешанным единоборствам в рамках UFC, методы сохранения (save_class_params) и загрузки состояния (load_class_params) могли выглядеть следующим образом (реализованы в классе UFCFightsParser, привожу с конструктором для понимания значений полей):