Чтение текста занимает около 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», как вы знаете.