Введение и обзор парсера
В наши дни парсить интернет-магазины не просто. Все они довольно продвинуты в плане защиты от парсеров и ботов. Они могут использовать такие типы защит как, использовать динамический контент, брандмаузеры. Одной из самых знаменитых компаний обеспечивающих такую защиту является cloudflare.
В этом туториале я покажу различные методы обходов блокировок на примере онлайн-магазина wildberries. Если быть более конкретным, то я покажу как сделать парсер на основе библиотеки Selenium и как настроить для него ротацию прокси. Прокси мы будем использовать бесплатные.
А в качестве бонуса предоставлю один парсер и один чекер прокси. Они помогут тебе в создании своих пулов прокси под различные сайты.
Пишем базовый парсер
Для начала, напишем и сделаем обзор на написанный мною парсер. Тебе потребуется создать и активировать виртуальное окружение.
Если windows то:
Если *unix системы то:
После чего установим необходимые пакеты:
Импортируем заголовки. В твоей рабочей директории, должна быть папка proxy_rotator Данный пакет регулирует выдачу прокси по запросу. Выдаёт она прокси случайно в зависимости от веса прокси. Чем больше вес, тем больше вероятность того, что будет выбрано именно эта прокси.
Добавим ещё пару утилитарных функций, таких как:
- сохранение в json
- сохранение в html
- загрузку прокси
- и парсинг необходимых данных
В моём случае я решил парсить главную страницу. Собрать все цены и заголовки товаров. Функция parse_data определяет что парсить и куда сохранять.
Добавим в самом низу данные строчки кода. Они говорят вызови функцию run() только если данный скрипт запускается при помощи python-интерпретатора.
Теперь то, как выглядит главная функция run():
Сначала создаём ротатор прокси, загружая в него уже подготовленный список ( о том как собрать свой собственный смотри в следующей главе). После чего в цикле создаём selenium драйвер и присваиваем ему прокси, если прокси плохой, то всплывёт исключение TimeoutException, что триггернёт сообщение в консоли и замену прокси.
Это был базовый парсер. Полностью готовый парсер сайта wildberries. В данном архиве ты найдёшь и proxy_rotator пакет и список готовых прокси, хотя я и не гарантирую что они будут работать на момент твоего прочтения данной статьи.
Сбор бесплатных прокси
Так как wildberries это интернет-магазин работающий на территории России и СНГ то и прокси должны быть оттуда, для большей правдоподобности наших парсеров на обычных пользователей.
Итак, как и откуда можно взять бесплатные прокси? Представляю тебе моего скраппера бесплатных прокси, с возможностью выбора и фильтрации прокси по странам, используемым протоколам и типу самих прокси.
Чтобы собрать только русские прокси с используемыми протоколоми http и https введи следующую команду:
Если хочешь узнать какие коды, каким странам соответствуют введи:
В результате ты получишь JSON файлы со списками прокси. Все такие файлы находятся в директории data. Всё происходит в параллельном режиме и ты можешь в любой момент остановить скрипт если посчитаешь, что тебе хватит.
Проверка бесплатных прокси
Итак, мы собрали сотни прокси и могу тебе гарантировать большинство из них это откровенный мусор. Нам нужно будет его отфильтровать, при чём, отфильтровать используя в качестве фильтра целевой сайт, то есть wildberries.
Для проверки работоспособности прокси на том или ином сайте, я создал специальный CLI инструмент. Который ты можешь скачать по ссылке в предыдущем предложении (⊙_(⊙_⊙)_⊙). Вот как проверить список таких прокси, команда:
Где -i это те прокси которые ты получил используя мой скрапер прокси
Где -o это имя файла-результата где каждому прокси будет присвоен вес.
Где -U это список сайтов проверки
Больше опций и вариантов можно посмотреть используя -h флаг. Но в данном случае нас больше заинтересует log.txt файл. Ведь там хранятся результаты проверок каждого прокси и то сколько раз он успешно подключался к целевому сайту. Выбери самые успешные прокси и объедини их в один JSON файл, который потом будешь использовать для парсинга сайтов.