Как написать парсер кинопоиска на python с файлами и исходным кодом
24.11.2024
15.04.2025
5 минут
220
0
0
0
0
Как он работает
Данный парсер собирает информацию со страниц сайта, которые содержат в своём адресе list. Проще говоря, это парсер страниц фильтраций и страниц пагинаций. Во каламбур :). Не стану скрывать, работает он довольно медленно, ибоб чтобы получить доступ к страницам данного сайта требуется использовать, так называемый динамический парсинг. То есть, парсинг страниц с предварительной отрисовкой и обработкой браузером.
Это первый барьер, который необходимо преодолеть, перед тем как получить доступ к необходимым страницам. Второй барьер на нашем пути, это блокировка определённых IP адресов с которых происходит парсинг. По этому используются, соответственно подобранные прокси.
Рабочий парсер сайта kinopoisk можно скачать от сюда. Тебе останется только активировать виртуальное окружение и установить необходимые пакеты.
Как его сделать, установка пакетов
Данный прасер мы напишем на python с использованием сторонних библиотек и утилит. Для начала создадим виртуальное оружение и установим его. Так же необходимо скачать мой прокси ротатор.
Если windows то:
Если *unix системы то:
Теперь очередь за необходимыми пакетами
Или можно использовать специально подготовленный файл с зависимостями для данного проекта.
Как его сделать, написание скрипта
Создай файл main.py в директории проекта. Наш скрипт не будет очень большим, чуть больше 100 строчек кода. Вот полностью готовый код парсера:
Дальше, чтобы было проще понять код, я разбил его на структурные элементы и функции. Начнём с главной функции run. Эта функция запускает парсинг и проводит ротацию прокси и решает, когда парсинг стоит закончить.
Она же, создаёт виртуальный браузер и делает запросы необходимых URL.
Дальше, Селениуму нужно зацепиться за что-то при загрузке. То есть начать действовать незамедлительно, как только появятся соответствующие элементы на странице. В случае с kinopoisk это элементы с классом base-movie-main-info_link__YwtP1. Вот цикл обхода по всем доступным страницам в том или ином списке.
Стоит обратить внимание на то, что я сохраняю результат в таблицу при парсинге каждой страницы и после обхода всех страниц. Таким образом, даже если вдруг парсер "падёт", мы всё ещё сможем получить необходимые данные.
Функция get_page_number, проще простого. Находим необходимый элемент и конвертируем строку в число:
Функция save_to_exel, ещё проще. Так как мы установили пакет pandas, всё что делает эта функция это создаёт особый фрейм данных и конвертирует его в таблицу:
Функция scrape_kinopoisk_list ищет необходимые элементы на странице и заполняет отправленный словарь.
Это собственно всё. Осталось только запустить функцию run. То, как это делать решать тебе. Просто запустить её внизу скрипта или сделать как я, то есть:
Сбор бесплатных прокси
Так как kinopoisk это сайт работающий на территории России и СНГ(по крайней мере аудитория оттуда) то и прокси должны быть оттуда, для большей правдоподобности наших парсеров на обычных пользователей.
Итак, как и откуда можно взять бесплатные прокси? Представляю тебе моего скраппера бесплатных прокси, с возможностью выбора и фильтрации прокси по странам, используемым протоколам и типу самих прокси.
Чтобы собрать только русские прокси с используемыми протоколоми http, https, socks4, socks5 введи следующую команду:
Если хочешь узнать какие коды, каким странам соответствуют введи:
В результате ты получишь JSON файлы со списками прокси. Все такие файлы находятся в директории data. Всё происходит в параллельном режиме и ты можешь в любой момент остановить скрипт если посчитаешь, что тебе хватит.
Проверка бесплатных прокси
Итак, мы собрали сотни прокси и могу тебе гарантировать большинство из них это откровенный мусор. Нам нужно будет его отфильтровать, при чём, отфильтровать используя в качестве фильтра целевой сайт, то есть kinopoisk.
Для проверки работоспособности прокси на том или ином сайте, я создал специальный CLI инструмент. Который ты можешь скачать по ссылке в предыдущем предложении (⊙_(⊙_⊙)_⊙). Вот как проверить список таких прокси, команда:
Где -i это те прокси которые ты получил используя мой скрапер прокси
Где -o это имя файла-результата где каждому прокси будет присвоен вес.
Где -U это список сайтов проверки
Больше опций и вариантов можно посмотреть используя -h флаг. Но в данном случае нас больше заинтересует log.txt файл. Ведь там хранятся результаты проверок каждого прокси и то сколько раз он успешно подключался к целевому сайту. Выбери самые успешные прокси и объедини их в один JSON файл, который потом будешь использовать для парсинга сайтов.
Комментарии
(0)
Отправить
Сейчас тут пусто. Буть первым (o゚v゚)ノ
Другое
Похожие статьи
Использованные термины
- Конструктор сайтов ⟶ Это приложение или веб сервис, с набором готовых решений и шаблонов, для создания сайтов.
- Питон или Python ⟶ Интерпретируеммый, объектно ориентированный, с динамической семантикой и высокоуровневый язы программирования. Активно используется для быстрой разработки, созданию скриптов и соединению существующих компонентов программы.
- Вебсайт ⟶ Это совокупность связанных между собой веб-страниц, доступных через интернет и имеющих одно общее доменное имя. Каждый веб-сайт может содержать текстовую информацию, изображения, видео и другие мультимедийные элементы. Веб-сайты могут выполнять различные функции, включая предоставление информации, общение, онлайн-торговлю и множество других взаимодействий.
- Парсер ⟶ Это программа или компонент программного обеспечения, который анализирует текст или данные, разбивая их на составные части и преобразуя в удобный для обработки формат. Обычно парсеры используются для извлечения информации из структурированных данных, таких как HTML, XML, JSON или других форматов.
Релевантные вопросы
- В чем разница между веб-скрапингом и веб-сканированием? Веб-скрейпинг и веб-краулинг — это два связанных понятия. Веб-скрейпинг, как мы уже упоминали выше, представляет собой процесс получения данных с веб-сайтов; веб-краулинг — это систематический просмотр Всемирной паутины, как правило, с целью индексации веб-сайтов.
- Что такое облачный парсер Это услуга по сборе информации из различных источников и группировки их в различных форматах, которая проводится на облачных серверах поставщика данной услуги.
- Как проводится парсинг Всё зависит от того что парсить и чем парсить. Можно парсить документы и таблицы, а можно парсить сайты. При чём сайты парсить сложнее чем документы, ибо сайтов великое множество и у каждого своя архитектура, что сильно усложняет парсинг.