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