Разница между BeautifulSoup и Scrapy Crawler?

134

Я хочу сделать сайт, который показывает сравнение между Amazon и E-Bay. Что из этого будет работать лучше и почему? Я немного знаком с BeautifulSoup, но не так много с Scrapy Crawler .

Нишант Бхакта
источник
6
Зачем вам использовать сканеры, когда оба этих сайта имеют отличный API? aws.amazon.com/python developer.ebay.com/common/api
Инбар Роуз,
5
Я из Индии и думаю, что Amazon-Api не поддерживает хостинг в Индии. для Индии нет api (локали) . HOSTS = {'ca': 'ecs.amazonaws.ca', 'cn': 'webservices.amazon.cn', 'de': 'ecs.amazonaws.de', 'es': 'webservices.amazon.es' , 'fr': 'ecs.amazonaws.fr', 'it': 'webservices.amazon.it', 'jp': 'ecs.amazonaws.jp', 'uk': 'ecs.amazonaws.co.uk' , 'us': 'ecs.amazonaws.com',}
Нишант Бхакта
11
А что, если я хочу сканировать какой-то другой сайт, у которого нет API?
Нишант Бхакта
@InbarRose Для использования API продукта Amazon требуется учетная запись Amazon Associate.
Захари Райан Смит

Ответы:

231

Scrapy - это фреймворк для веб-пауков или веб-скребков. Вы предоставляете Scrapy корневой URL-адрес для начала сканирования, затем вы можете указать ограничения на количество (количество) URL-адресов, которые вы хотите сканировать и получать и т. Д. Это полная структура для просмотра веб-страниц или сканирования .

Пока

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

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

Источник

Medeiros
источник
1
что быстрее, я имею в виду, я использую BeautifulSoup, и это займет около 10 секунд, чтобы очистить данные? ли скрапирование быстрее, чем Beautifulsoup?
shuboy2014
Если вы используете BeautifulSoup с блокирующим кодом, Scrapy должна быть быстрее, если есть независимые запросы, но я думаю, вы также можете использовать BeautifulSoup с Asyncio для повышения производительности.
18:30
Я бы сказал, что Scrapy вместе с BeautifulSoup будут очень быстрыми, и вы сможете получить максимум от обоих.
Рахул
18

Я думаю, что оба хороши ... я делаю проект прямо сейчас, который использует оба. Сначала я удаляю все страницы с помощью скрапа и сохраняю их в коллекции mongodb, используя их конвейеры, а также загружаю изображения, существующие на странице. После этого я использую BeautifulSoup4, чтобы выполнить pos-обработку, где я должен изменить значения атрибутов и получить некоторые специальные теги.

Если вы не знаете, какие страницы нужных вам продуктов, хорошим инструментом будет скрап, так как вы можете использовать их сканеры для запуска всех сайтов Amazon / Ebay, ищущих продукты, без создания явного цикла for.

Взгляните на документацию по скрапу, она очень проста в использовании.

rdenadai
источник
Так что я могу использовать Scrapy на веб-сервере, потому что есть много таких зависимостей, как (Twisted, pywin32, pyOpenSSL ete ..). (Извините за этот глупый вопрос, я новичок в python)
Nishant Bhakta
На веб-сервере? Я никогда не пробую это ... я использую его на оболочке, запускаю "scrapy crawl <name of crawler>" для запуска паука ... возможно, вы могли бы использовать это на сервере, но вы должны вызывать это с помощью python модуль подпроцесса ( docs.python.org/2/library/subprocess.html ). Как я уже сказал, никогда не пытайтесь это сделать, но, возможно, это может сработать ... просто обратите внимание, используйте сообщение журнала от scrapy, чтобы вы знали, где могут возникнуть ошибки на вашем сканере (из журнала импорта scrapy).
rdenadai
4

Оба используют для разбора данных.

Scrapy :

  • Scrapy - это быстрый высокоуровневый фреймворк для веб-сканирования и сканирования, используемый для сканирования веб-сайтов и извлечения структурированных данных из их страниц.
  • Но у него есть некоторые ограничения, когда данные поступают из java-скрипта или динамически загружаются, мы можем преодолеть это с помощью таких пакетов, как splash, selenium и т. Д.

BeautifulSoup :

  • Beautiful Soup - это библиотека Python для извлечения данных из файлов HTML и XML.

  • мы можем использовать этот пакет для получения данных из сценария Java или динамической загрузки страниц.

Scrapy with BeautifulSoup - одна из лучших комбинаций, с которой мы можем работать для очистки статического и динамического содержимого.

Арун Августин
источник
2

Для этого я использую API-интерфейс eBay / Amazon, а не скрапбу, а затем анализирую результаты с помощью BeautifulSoup.

API предоставляет вам официальный способ получения тех же данных, которые вы получили бы от сканера Scrapy, и вам не нужно беспокоиться о том, чтобы скрыть свою личность, связываться с прокси и т. Д.

baldnbad
источник
8
Вопрос явно требует решений, где API не доступны.
Роханил
2

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

  • Экспорт каналов: в основном это позволяет нам сохранять данные в различных форматах, таких как CSV, JSON, jsonlines и XML.
  • Асинхронная очистка: Scrapy использует витую структуру, которая дает нам возможность посещать несколько URL-адресов одновременно, где каждый запрос обрабатывается неблокирующим образом (в основном нам не нужно ждать завершения запроса перед отправкой другого запроса).
  • Селекторы : Здесь мы можем сравнить скрап с красивым супом. Селекторы - это то, что позволяет нам выбирать определенные данные на веб-странице, такие как заголовок, определенный div с именем класса и т. Д.). Scrapy использует lxml для разбора, который очень быстр, чем красивый суп.
  • Настройка прокси, пользовательского агента, заголовков и т. Д .: scrapy позволяет нам динамически устанавливать и вращать прокси и другие заголовки.

  • Конвейеры элементов : Конвейеры позволяют нам обрабатывать данные после извлечения. Например, мы можем настроить конвейер для передачи данных на ваш сервер MySQL.

  • Куки: Scrapy автоматически обрабатывает куки для нас.

и т.п.

TLDR: scrapy - это структура, которая предоставляет все, что может понадобиться для создания крупномасштабных обходов. Он предоставляет различные функции, которые скрывают сложность сканирования сетей. Можно просто начать писать веб-сканеры, не беспокоясь о бремени установки.

Beautiful soup Beautiful Soup - это пакет Python для анализа документов HTML и XML . Таким образом, с Beautiful soup вы можете анализировать веб-страницу, которая уже была загружена. BS4 очень популярен и стар. В отличие от скрапа, Вы не можете использовать красивый суп только для изготовления гусениц . Для создания сканеров с bs4 вам понадобятся другие библиотеки, такие как запросы, urllib и т. Д. Опять же, это означает, что вам потребуется управлять списком просматриваемых URL-адресов, сканировать их, обрабатывать файлы cookie, управлять прокси-сервером, обрабатывать ошибки, создавать собственные функции для передачи данных в CSV, JSON, XML и т. Д. Если вы хотите ускорить чем вам придется использовать другие библиотеки, такие как многопроцессорность .

Подводить итоги.

  • Scrapy - это богатая среда, которую вы можете использовать, чтобы начать писать сканеры без каких-либо проблем.

  • Красивый суп - это библиотека, которую вы можете использовать для разбора веб-страницы. Он не может быть использован в одиночку для очистки сети.

Вы должны определенно использовать scrapy для своего сайта сравнения цен на продукты Amazon и e-bay. Вы можете создать базу данных URL-адресов и запускать сканер каждый день (задания cron, Celery для планирования обходов) и обновлять цену в своей базе данных. Таким образом, ваш сайт всегда будет извлекать данные из базы данных, а сканер и база данных будут действовать как отдельные компоненты.

Amit
источник
1

BeautifulSoup - это библиотека, которая позволяет извлекать информацию с веб-страницы.

Scrapy, с другой стороны, - это фреймворк, который выполняет все вышеперечисленное и многое другое, что вам может понадобиться в вашем проекте очистки, например конвейеры для сохранения данных.

Вы можете проверить этот блог, чтобы начать работу с Scrapy https://www.inkoop.io/blog/web-scraping-using-python-and-scrapy/

Яскаран Сингх
источник
0

Используя scrapy, вы можете сохранить тонны кода и начать со структурированного программирования. Если вам не нравится какой-либо из заранее написанных методов scapy, то BeautifulSoup можно использовать вместо метода scrapy. Большой проект имеет оба преимущества.

ethirajit
источник
0

Различий много, и выбор любого инструмента / технологии зависит от индивидуальных потребностей.

Несколько основных отличий:

  1. BeautifulSoup сравнительно прост в освоении, чем Scrapy.
  2. Расширения, поддержка, сообщество больше для Scrapy, чем для BeautifulSoup.
  3. Scrapy следует рассматривать как Spider, а BeautifulSoup - это Parser .
Кришна
источник