Веб-скрейпинг, как мы все знаем, это дисциплина, которая развивается с течением времени. Появляются все более сложные средства борьбы с ботами, а также новые инструменты веб-скраппинга с открытым исходным кодом для их обхода.
Давайте вместе разберемся, какие инструменты нельзя упускать разработчикам веб-скраперов на python.
Веб-скрейпинг + Python = Scrapy, по определению. Scrapy родился в 2009 году и является наиболее полным фреймворком для веб-скраппинга, который предоставляет разработчику множество возможностей для управления каждым этапом процесса сбора данных.
Открытый исходный код, поддерживаемый Zyte (ранее известный как Scrapinghub), имеет большое преимущество - в сети есть множество документации, учебников и курсов, с которых можно начать. Будучи написанной на Python, она позволяет начать работу и создать своего первого паука в течение нескольких минут.
Еще одним большим преимуществом является его модульная архитектура, описанная на рисунке ниже и хорошо объясненная в официальной документации .
Давайте кратко опишем рабочий процесс.
Большая часть волшебства Scrapy происходит в двух промежуточных компонентах: в промежуточном компоненте Downloader Middlewares вы можете добавить некоторые манипуляции к запросам и ответам. Например, вы можете фильтровать Запросы до того, как они будут отправлены на сайт, возможно, потому что они дублируются. Или вы можете манипулировать Ответами до того, как они будут использованы пауком.
В промежуточных компонентах паука вы можете обрабатывать выходные данные паука (элементы или запросы) и обрабатывать исключения.
Элементы - это стандартный вывод пауков Scrapy, а в конвейерах элементов есть опции и функции для управления выводом пауков, например, форматы файлов, разделители полей и так далее. Это делает Scrapy чрезвычайно полезным для структурированных данных с несколькими столбцами в строке.
Немного саморекламы здесь, это пакет python для Scrapy, написанный мной, который обрабатывает списки прокси в нескольких форматах и использует их в вашем проекте Scrapy. Вы можете использовать список, доступный по публичному URL, список на локальной машине, или прокси прямо в опциях. Далек от совершенства, но мы используем его ежедневно в производстве.
Scrapy - замечательный инструмент, но у него есть некоторые ограничения, самое большое из которых заключается в том, что он читает только статический HTML.
Чтобы преодолеть это ограничение, плагин scrapy-splash добавляет возможность делать вызовы Splash API внутри вашего проекта Scrapy.
Splash - это легкий браузер с HTTP API, реализованный на Python 3 с использованием Twisted и QT5.
Это промежуточное ПО загрузчика модифицирует запросы, направляя их на Splash-сервер, указанный в опциях Scrapy, так что ответ содержит результат выполнения Javascript.
В случае, если есть необходимость в реальном браузере для соскабливания какого-либо сайта, Microsoft Playwright является новейшим решением, на которое мы можем положиться.
Это не единственное решение для автоматизированного тестирования, которое позволяет нам написать сценарий выполнения браузера и соскрести его содержимое, есть еще Selenium, как пример, но это самое простое в использовании и на данный момент то, которое гарантирует более успешные ответы в случае сильного анти-бот программного обеспечения.
В его установочный пакет уже включены самые популярные браузеры, а если включить в исполнение еще и пакет playwright-stealth, то браузер становится практически неотличим от настоящей человеческой установки.
Недавно я обнаружил эту Python обертку для Wappalyzer.
Wappalyzer - это инструмент, который обнаруживает технологический стек, стоящий за веб-сайтом, например, анти-бот программное обеспечение и общую платформу электронной коммерции.
Эта обертка в python позволяет вам программно изучать целевой веб-сайт из командной строки.
На данный момент мне кажется, что это один из лучших инструментов веб-скрейпинга с открытым исходным кодом для веб-скрейперов на python, но если чего-то не хватает или вы используете что-то другое и хотите обратиться к нам, не стесняйтесь, пишите нам.
Эта статья была любезно предоставлена Pierluigi Vinciguerra, экспертом по веб-скрейпингу и основателем Web Scraping Club . Перейдите по ссылке , чтобы увидеть оригинал статьи.
Скачайте браузер конфиденциальности GoLogin здесь - и наслаждайтесь скраппингом даже самых продвинутых и защищенных веб-сайтов с нашим бесплатным планом!
20.08.2023 18:21
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".
20.08.2023 17:46
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
19.08.2023 18:39
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.
19.08.2023 17:22
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!
18.08.2023 20:33
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.
14.08.2023 14:49
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.