R50 07c3e9e80be2cfefed573f9697c0b5a9
Python-Developer

Парсинг мексиканского новостного сайта "Diariopresente.mx"

Добавлено 14 ноя 2022 в 05:34
Ссылка на GitHub: scraping_diariopresente.mx

Цель
Заказчик хотел собрать данные о статьях с новостного сайта. Необходимо было собрать данные (Дата, Заголовок, URL) по всем статьям на сайте и записать их в сsv файл

Решение
Парсинг любого сайта начинается с анализа и планирования работы. Первый шаг — просмотреть сайт, чтобы понять, с чем нам приходится иметь дело.

Навигация по сайту классически расположена на верхней панели. Сам сайт очень простой, даже слишком простой. Он состоит только из страниц, перечисленных в навигации по сайту и страниц статей. Всего на сайте 13 разделов. Но нас интересуют только 11 из них. Так как первый раздел является главной страницей сайта, собирая несколько статей со всех остальных разделов. А последний раздел вообще не содержит статей. То есть наша задача проанализировать эти 11 разделов и собрать из них информацию.

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

Каждый раздел содержит 10 статей и кнопку «Еще новости», которая загружает следующие 10 статей. Сразу складывается впечатление, что здесь работает Java Script для загрузки дополнительных статей. Однако я бы сначала изучил HTML этого сайта. Дело в том, что сайт довольно простой и небольшой. И такие сайты редко имеют API. При анализе HTML сайта видим, что загрузки через Java Script здесь нет. Статьи изначально присутствуют на странице, просто скрыты от пользователя стилем display:none. При нажатии на кнопку «Еще новости» стиль display:none удаляется и статьи становятся видимыми. То есть, как мы и предполагали, никакого API здесь нет. Таким образом, задача сводится к следующим действиям:
1. Получите HTML-код страницы сайта с помощью get запроса.
2. Соберите необходимую информацию с HTML-страницы с помощью BeautifulSoup
3. Записать информацию в файл с расширением сsv
155d828f2f D0401e34c6 589367cc9b 4e21e7f73f 27e3b097fa