CoderCastrov logo
CoderCastrov
Парсер веб-сайтов

Как парсить веб-страницы с помощью Python: Scrapy vs Beautiful Soup

Как парсить веб-страницы с помощью Python: Scrapy vs Beautiful Soup
просмотров
6 мин чтение
#Парсер веб-сайтов

Если вам нужен парсинг веб-страниц, то Python - язык, который стоит выбрать. Но знание того, что это правильный язык, не означает, что мы должны начинать писать код с нуля. Вместо этого у нас есть два очень привлекательных варианта на выбор.

Первый называется Scrapy и является полнофункциональным фреймворком на Python, используемым для парсинга веб-страниц. Второй вариант - Beautiful Soup, набор функциональных инструментов для извлечения данных из HTML и XML.

У каждого из них есть свои плюсы и минусы. Оба предлагают способ парсинга веб-страниц. Вопрос теперь стоит в том, "какой лучше подходит для вашего случая?". Как всегда, правильный инструмент определяется сценарием использования. Инструмент хорош только насколько хорош его пользователь и то, что он делает.


Что такое парсинг веб-страниц и почему это важно?

Прежде чем мы продолжим, давайте кратко расскажем о том, что такое "парсинг веб-страниц" и почему это может быть интересно для кого-то. Краткий ответ - это процесс извлечения определенных данных из веб-страницы. Это также называется веб-скрапингом, извлечением веб-данных или просто скрапингом.

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

Здесь заключается применение таких приложений, которые мы удобно называем "data mining" (добыча данных). Они могут просмотреть страницу и предоставить вам только интересующие вас данные.

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

Scrapy - фреймворк на языке Python для парсинга веб-сайтов

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

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

Так что же может делать Scrapy?

  • Прежде всего, у него есть встроенная поддержка извлечения данных из источников HTML с использованием выражений XPath и CSS.
  • Он состоит из портативной библиотеки, написанной на Python, и работает на Linux, Windows, Mac и BSD.
  • Он легко расширяем.
  • Его скорость работы можно сказать в 20 раз выше, чем у других библиотек.
  • Он эффективен как с точки зрения использования памяти, так и процессора.
  • При некоторой креативности вы можете создавать обширные и надежные приложения.
  • Есть также сильная поддержка сообщества для разработчиков, но немного слабая документация для начинающих.

Пример парсинга отзывов на Amazon с использованием Scrapy:

import scrapy

class AmazonReviewsSpider(scrapy.Spider):
  name = 'amazon_reviews'
  allowed_domains = ['amazon.de']
  myBaseUrl = "https://www.amazon.de/Neues-Apple-MacBook-256GB-Speicherplatz/product-reviews/B07S58MJHK/?reviewerType=all_reviews&pageNumber="
  start_urls=[]

  for n in range(100):
    start_urls.append(myBaseUrl+str(n))

  def parse(self, response):
    data = response.css('#cm_cr-review_list')
    reviews = data.css('.review-rating')
    comments = data.css('.review-text')

    # Комбинирование результатов
    for n, review in enumerate(reviews):
      yield{'stars': ''.join(review.xpath('.//text()').extract()),
        'comment': ''.join(comments[n].xpath(".//text()").extract())
        }

Beautiful Soup — библиотека для извлечения данных из HTML и XML

Далее у нас есть "Beautiful Soup". Это библиотека, которая упрощает извлечение информации с веб-страниц. Она использует HTML или XML парсер и предоставляет питоновские идиомы для итерации, поиска и модификации дерева разбора.

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

Использование Beautiful Soup не является универсальным решением. Чтобы извлечь максимальную пользу из него, вам потребуется использовать несколько библиотек. Для отправки запроса на веб-сайт требуется библиотека, так как Beautiful Soup сам не может отправлять запросы на конкретный сервер. Чтобы решить эту проблему, он использует самую популярную библиотеку с названием Requests или Urlib2. Эти библиотеки помогут нам отправить запрос на сервер.

После загрузки HTML, XML данных на наш локальный компьютер, Beautiful Soup требует внешний парсер для разбора загруженных данных. Самые известные парсеры - это XML-парсер lxml, HTML-парсер lxml, HTML5lib, HTML.parser.

Некоторые из преимуществ Beautiful Soup включают:


Что подходит вам?

К настоящему моменту становится ясно несколько вещей. Во-первых, Scrapy является более полным из двух приложений, если вы серьезно занимаетесь парсингом веб-сайтов или работаете с очень большим набором данных (веб-сайт с большим объемом данных, которые нужно извлечь).

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

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

Превратите свою идею в мощный продукт с опытными разработчиками на Python


Оригинальная публикация на Как парсить веб-сайты с помощью Python: Scrapy против Beautiful Soup.


Парсинг веб-сайтов с помощью Python: Scrapy против Beautiful Soup

Scrapy vs Beautiful Soup

Когда дело доходит до парсинга веб-сайтов, Python предлагает несколько мощных инструментов, которые могут помочь вам извлекать данные с веб-страниц. Два из самых популярных инструментов для парсинга веб-сайтов на Python - это Scrapy и Beautiful Soup. Оба инструмента имеют свои преимущества и недостатки, и выбор между ними зависит от ваших конкретных потребностей и предпочтений.

Scrapy

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

Основные преимущества Scrapy:

  • Мощная архитектура: Scrapy предлагает мощные инструменты для парсинга веб-сайтов, включая возможность обработки JavaScript, обработки форм, автоматической навигации по сайту и многое другое.
  • Асинхронная обработка: благодаря асинхронной архитектуре, Scrapy может эффективно обрабатывать большие объемы данных и параллельно выполнять несколько запросов.
  • Расширяемость: Scrapy предлагает множество расширений и плагинов, которые позволяют настраивать и расширять его функциональность.
  • Документация и сообщество: Scrapy имеет обширную документацию и активное сообщество, что делает его легким в освоении и обеспечивает поддержку в случае возникновения проблем.

Beautiful Soup

Beautiful Soup - это библиотека для парсинга HTML и XML документов на Python. Она предоставляет простой и интуитивно понятный интерфейс для извлечения данных из веб-страниц. Beautiful Soup позволяет вам искать элементы по тегам, классам, идентификаторам и другим атрибутам, а также обрабатывать их и извлекать необходимые данные.

Основные преимущества Beautiful Soup:

  • Простота использования: Beautiful Soup предлагает простой и интуитивно понятный интерфейс, который делает его легким в освоении даже для новичков.
  • Гибкость: Beautiful Soup позволяет искать элементы по различным атрибутам, что делает его гибким инструментом для извлечения данных из веб-страниц.
  • Поддержка HTML и XML: Beautiful Soup поддерживает парсинг как HTML, так и XML документов, что делает его универсальным инструментом для работы с различными типами веб-страниц.
  • Обработка "грязных" данных: Beautiful Soup может обрабатывать "грязные" данные, такие как неправильно вложенные теги или неправильно закрытые теги, и все равно извлекать из них нужные данные.

Какой инструмент выбрать?

Выбор между Scrapy и Beautiful Soup зависит от ваших конкретных потребностей и предпочтений. Если вам нужен мощный и гибкий инструмент для парсинга веб-сайтов с поддержкой обработки JavaScript и форм, то Scrapy может быть лучшим выбором. Однако, если вам нужен простой и интуитивно понятный инструмент для извлечения данных из веб-страниц, то Beautiful Soup может быть более подходящим вариантом.

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