Введение во фреймворк Scrapy с использованием фреймворка Scrapy

задняя часть Архитектура рептилия Scrapy

Scrapy — это фреймворк асинхронной обработки, основанный на Twisted, краулер-фреймворк, реализованный на чистом Python, с понятной архитектурой, низкой степенью связанности между модулями, сильной масштабируемостью и возможностью гибко удовлетворять различные потребности. Нам нужно всего лишь разработать несколько модулей, чтобы легко реализовать сканер.

1. Введение в архитектуру

Во-первых, давайте посмотрим на архитектуру фреймворка Scrapy, как показано на следующем рисунке.

Его можно разделить на следующие части.

  • Engine. Движок, который обрабатывает поток данных и запускает всю систему, является ядром всей инфраструктуры.

  • Item. Item, который определяет структуру данных результата обхода, и данные обхода будут присвоены объекту Item.

  • Scheduler. Планировщик принимает запрос, отправленный механизмом, и добавляет его в очередь, а также передает запрос механизму, когда механизм снова запрашивает.

  • Downloader. Загрузчик, загружает веб-контент и возвращает веб-контент пауку.

  • Spiders. Паук, который определяет логику сканирования и правила анализа веб-страницы, в основном отвечает за анализ ответа и создание результатов извлечения и новых запросов.

  • Item Pipeline. Конвейер элементов, отвечающий за обработку элементов, извлеченных с веб-страниц пауками, его основная задача — очистить, проверить и сохранить данные.

  • Downloader Middlewares. Промежуточное ПО загрузчика, связующее звено между движком и загрузчиком, в основном обрабатывает запросы и ответы между движком и загрузчиком.

  • Spider Middlewares. Промежуточное программное обеспечение паука, связующее звено между движком и пауком, в основном обрабатывает входной ответ паука, результат вывода и новый запрос.

2. Поток данных

Поток данных в Scrapy контролируется движком, и процесс потока данных выглядит следующим образом.

  • Engine сначала открывает веб-сайт, находит паука, который обрабатывает веб-сайт, и запрашивает у паука первый URL-адрес для сканирования.

  • Engine получает первый URL-адрес для сканирования от Spider и планирует его в форме запроса через планировщик.

  • Механизм запрашивает у планировщика следующий URL для обхода.

  • Планировщик возвращает следующий URL-адрес для сканирования в механизм, а механизм перенаправляет URL-адрес в загрузчик для загрузки через ПО промежуточного слоя загрузчика.

  • Как только страница загружена, загрузчик генерирует ответ страницы и отправляет его в механизм через ПО промежуточного слоя загрузчика.

  • Engine получает ответ от загрузчика и отправляет его в Spider для обработки через промежуточное ПО Spider.

  • Паук обрабатывает ответ и возвращает просканированный элемент и новый запрос механизму.

  • Механизм отправляет элемент, возвращенный пауком, в конвейер элементов и отправляет новый запрос планировщику.

  • Повторяйте шаг от второго до последнего, пока в Планировщике больше не останется Запросов, Движок закроет сайт и сканирование завершится.

Благодаря сотрудничеству нескольких компонентов, различной работе, выполняемой разными компонентами, и поддержке компонентов для асинхронной обработки Scrapy максимально использует пропускную способность сети и значительно повышает эффективность сканирования и обработки данных.

3. Структура проекта

Фреймворк Scrapy отличается от pyspider тем, что он создает проекты через командную строку, а для написания кода по-прежнему требуется IDE. После создания проекта файловая структура проекта выглядит следующим образом:

scrapy.cfg
project/
    __init__.py
    items.py
    pipelines.py
    settings.py
    middlewares.py
    spiders/
        __init__.py
        spider1.py
        spider2.py
        ...

Функции каждого файла здесь описаны следующим образом.

  • scrapy.cfg: это файл конфигурации проекта Scrapy, который определяет путь к файлу конфигурации и информацию, связанную с развертыванием проекта.

  • items.py: Он определяет структуру данных Предмета, и все определения Предмета могут быть размещены здесь.

  • pipelines.py: он определяет реализацию конвейера элементов, и все реализации конвейера элементов могут быть размещены здесь.

  • settings.py: определяет глобальную конфигурацию проекта.

  • middlewares.py: определяет реализацию ПО промежуточного слоя Spider и ПО промежуточного слоя Downloader.

  • spiders: Он содержит реализацию каждого паука, и у каждого паука есть файл.

4. Вывод

В этом разделе представлена ​​базовая архитектура, процесс потока данных и структура проекта платформы Scrapy. Позже мы узнаем больше об использовании Scrapy и почувствуем его мощь.



Этот ресурс был впервые опубликован в личном блоге Цуй Цинцай Цзин Ми:Практическое руководство по разработке веб-краулера на Python3 | Цзин Ми

Если вы хотите узнать больше информации о поисковых роботах, обратите внимание на мой личный публичный аккаунт WeChat: Coder of Attack.

WeChat.QQ.com/Day/5 Это радость VE Z…(автоматическое распознавание QR-кода)