Pyspider для эффективного шалевой структуры

Python Архитектура рептилия pyspider

Чтение текста занимает около 5 минут.

Зачем использовать краулер-фреймворк

В нашем обычном процессе использования краулера мы просто используем библиотеки краулера, такие как requsets, xpath и т. д., что далеко не соответствует требованиям фреймворка краулера. Прототип фреймворка сканера должен включать планировщики, очереди, объекты запросов и т. д. Программы-краулеры, которые мы обычно пишем, не имеют даже самой базовой структуры.

Однако такая архитектура и модули все еще слишком просты и далеки от соответствия требованиям фреймворка. Если мы разделим каждый компонент и определим его как разные модули, постепенно будет сформирована структура.

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

В реальном процессе проекта мы часто используем фреймворк сканера для сканирования, что может повысить эффективность разработки и сэкономить время разработки. И pyspider — это очень хороший краулер-фреймворк, он прост в эксплуатации и мощен, с его помощью мы можем быстро и легко завершить разработку краулеров.

Знакомство с фреймворком pyspider

pyspider — это мощная система веб-сканирования, написанная китайским binux.Он поставляется с мощным веб-интерфейсом, редактором сценариев, монитором задач, управлением проектами и обработчиком результатов.Он поддерживает несколько серверных баз данных, несколько очередей сообщений, JavaScript Сканирование отображаемой страницы. Это очень удобно в использовании.

Его адрес GiHub:

https://github.com/binux/pyspider

Официальный адрес документа:

http://docs.pyspider.org/

основные функции паука

Функции pyspider заключаются в следующем:

  • 1 Обеспечьте удобную и простую в использовании систему WebUI для визуального написания и настройки сканеров

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

  • 3 Поддержка нескольких серверных баз данных, таких как MySQL, MongoDB, Reids, SQLite, Elasticsearch, PostgreSQL.

  • 4 Поддержка нескольких очередей сообщений, таких как RabbitMQ, Beanstalk, Redis, Kombu.

  • 5 Обеспечивает такие функции, как управление приоритетом, повторная попытка при сбое и захват времени.

  • 6 Состыковываясь с PhantomJS, вы можете захватывать страницы, отображаемые с помощью JavaScript.

  • 7 Поддержка одиночной машины и распределенного развертывания, поддержка развертывания Docker.

Если вы хотите быстро и легко сканировать страницу, хорошим выбором будет использование pyspider. Например, быстро получить новостной контент обычного новостного веб-сайта. Однако, если вы имеете дело с крупномасштабным скрейпингом с сильной степенью защиты от сканирования, рекомендуется использовать Scrapy, например, для скрейпинга крупномасштабного сбора данных веб-сайтов с заблокированными IP-адресами, заблокированными учетными записями и высокочастотной проверкой.

Архитектура паука

Архитектура pyspider в основном делится на три части: Scheduler (планировщик), Fetcher (граббер) и Processor (процессор). Весь процесс сканирования контролируется монитором, а результаты обхода обрабатываются обработчиком результатов.

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

Логика процесса выполнения задачи pyspider очень понятна, конкретный процесс выглядит следующим образом:

  • 1 Каждый проект pysipder соответствует скрипту Python, определяющему класс Handler с методом on_start(). Сканирование сначала вызывает метод on_start() для создания начальной задачи сканирования, а затем отправляет ее планировщику.

  • 2 Планировщик распределяет задачу выборки в Fetcher для извлечения, Fetcher выполняет и получает ответ, а затем отправляет ответ процессору.

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

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

  • 5 Повторяйте описанную выше работу непрерывно, пока не будут выполнены все задачи и не завершится выборка.

  • 6 После завершения захвата программа вызовет метод on_finished(), в котором можно определить процесс постобработки.


Сегодня я покажу вам основные функции и архитектуру pyspider, а также общее представление о pysider. Далее я опубликую практический проект pysipder, чтобы вы лучше поняли, как использовать pysipder.


Эта статья была впервые опубликована в общедоступном аккаунте «Chihai», где каждый день делились галантереей из питона и отвечали на «1024», как вы знаете.