Подтвердить что ты не робот

Может ли Scrapy заменить на pyspider?

Я использую Scrapy web-scraping framework довольно широко, но недавно я обнаружил, что есть еще одна инфраструктура/система, называемая pyspider, который, согласно ему github-страница, свежий, активно развивается и популярен.

Домашняя страница

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

  • Мощный WebUI с редактором script, монитором задач, диспетчером проекта и просмотром результатов

  • Поддерживаются страницы Javascript!

  • Приоритет задачи, повторный, периодический и recrawl по возрасту или меток на индексной странице (например, время обновления)

  • Распределенная архитектура

Это те вещи, которые Scrapy сам не предоставляет, но это возможно с помощью portia (для Веб-интерфейс), scrapyjs (для js-страниц) и scrapyd (развертывание и распространение через API).

Правда ли, что pyspider может заменить все эти инструменты? Другими словами, pyspider является прямой альтернативой Scrapy? Если нет, то какие варианты использования он охватывает?

Надеюсь, я не пересекаю линию "слишком широкую" или "основанную на мнениях".

4b9b3361

Ответ 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

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