Может ли Scrapy заменить на pyspider?
Я использую Scrapy
web-scraping framework довольно широко, но недавно я обнаружил, что есть еще одна инфраструктура/система, называемая pyspider
, который, согласно ему github-страница, свежий, активно развивается и популярен.
Домашняя страница
pyspider
перечисляет несколько вещей, которые поддерживаются из коробки:
-
Мощный WebUI с редактором script, монитором задач, диспетчером проекта и просмотром результатов
-
Поддерживаются страницы Javascript!
-
Приоритет задачи, повторный, периодический и recrawl по возрасту или меток на индексной странице (например, время обновления)
-
Распределенная архитектура
Это те вещи, которые Scrapy
сам не предоставляет, но это возможно с помощью portia
(для Веб-интерфейс), scrapyjs
(для js-страниц) и scrapyd
(развертывание и распространение через API).
Правда ли, что pyspider
может заменить все эти инструменты? Другими словами, pyspider
является прямой альтернативой Scrapy? Если нет, то какие варианты использования он охватывает?
Надеюсь, я не пересекаю линию "слишком широкую" или "основанную на мнениях".
Ответы
Ответ 1
pyspider и Scrapy имеют ту же цель, что и веб-скребок, но другое представление об этом.
-
Паук никогда не должен останавливаться, пока WWW не погибнет. (информация меняется, данные обновляются на веб-сайтах, у паука должна быть возможность и ответственность за очистку последних данных. Поэтому у pyspider есть URL-база данных, мощный планировщик, @every
, age
и т.д.)
/li > -
pyspider - это сервис больше, чем каркас. (Компоненты работают в изолированном процессе, версия lite - all
запущена как служба тоже, вам не нужно иметь среду Python, но браузер, все, что касается выборки или расписания, контролируется script через API, а не параметры запуска или глобальные configs, ресурсы/проекты управляются pyspider и т.д.)
-
pyspider - это система пауков. (Любые компоненты могут быть заменены, даже разработаны на C/С++/Java или любом языке, для повышения производительности или большей емкости).
и
-
on_start
vs start_url
- маркер маркера управление трафиком vs
download_delay
-
return json
vs class Item
- очередь сообщений vs
Pipeline
- встроенная база данных URL-адресов vs
set
- Стойкость vs In-memory
- PyQuery + любой третий пакет, который вам нравится, и встроенная поддержка CSS/Xpath.
На самом деле, я не упомянул много о Scrapy. pyspider действительно отличается от Scrapy.
Но почему бы не попробовать сами? pyspider также быстро, имеет простой в использовании API, и вы можете попробовать его без установки.
Ответ 2
Поскольку я пользуюсь как скрапом, так и писпиром, я хотел бы предложить следующее:
Если сайт действительно маленький/простой, попробуйте сначала pyspider, так как он содержит почти все, что вам нужно
- Используйте webui для настройки проекта
- Попробуйте онлайн-редактор кода и мгновенно просмотрите результат разбора
- Просмотреть результат легко в браузере
- Запустить/приостановить проект
- Установите срок действия, чтобы он мог повторно обрабатывать URL
Однако, если вы попробовали pyspider и обнаружили, что он не соответствует вашим потребностям, пришло время использовать скрап. - перенести on_start в start_request - перенести index_page для анализа - перенести detail_age в detail_age - изменить self.crawl на response.follow
Тогда вы почти закончили. Теперь вы можете играть с такими передовыми функциями, как связующее ПО, предметы, трубопроводы и т.д.