Закон и парсинг сайтов

Beautiful Soup против Scrapy для парсинга

Многие, кто только начинает заниматься парсингом, задаются вопросом, в чем разница между Beautiful Soup и Scrapy. Эта статья должна пролить свет на их различные функции и цели и помочь вам решить, какой из них лучше подходит для вашего проекта. Разработчики Python даже более вероятно, чем большинство других, будут нуждаться в парсинге на определенном этапе своей карьеры. В эпоху больших данных умение создавать ботов для «открытия» веб-сайтов и извлечения информации, иначе называемое парсингом, является практически обязательным для всех, кто имеет дело с цифровыми данными. Два популярных инструмента для парсинга на PythonBeautiful Soup и Scrapy. Какой из них подходит для ваших нужд? Давайте узнаем.

0.00
Этот товар имеет несколько вариаций. Опции можно выбрать на странице товара.
Диапазон цен: ₽0.00 – ₽106.00
Этот товар имеет несколько вариаций. Опции можно выбрать на странице товара.
0.00
Этот товар имеет несколько вариаций. Опции можно выбрать на странице товара.
Диапазон цен: ₽0.00 – ₽416.00
Этот товар имеет несколько вариаций. Опции можно выбрать на странице товара.

МАРКЕТПЛЕЙСЫ

ОЗОН.РУ

0.00
Добавить в корзину
Диапазон цен: ₽0.00 – ₽7,346.00
Этот товар имеет несколько вариаций. Опции можно выбрать на странице товара.
0.00
Этот товар имеет несколько вариаций. Опции можно выбрать на странице товара.
0.00
Этот товар имеет несколько вариаций. Опции можно выбрать на странице товара.
0.00
Этот товар имеет несколько вариаций. Опции можно выбрать на странице товара.
Диапазон цен: ₽0.00 – ₽126.00
Этот товар имеет несколько вариаций. Опции можно выбрать на странице товара.
0.00
Этот товар имеет несколько вариаций. Опции можно выбрать на странице товара.

СЕЛЬСКОЕ ХОЗЯЙСТВО И САДОВОДСТВО

База всех компаний в категории: ПОСТАВЩИК СЕНА

0.00
Этот товар имеет несколько вариаций. Опции можно выбрать на странице товара.

Что такое Beautiful Soup?

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

Начните с использования pip для установки Beautiful Soup и Python Requests в качестве зависимостей проекта:

pip install beautifulsoup4 requests

Чтобы спарсить веб-страницу, необходимо сначала загрузить HTML-содержимое страницы с помощью HTTP-клиента типа requests, а затем разобрать содержимое страницы с помощью BeautifulSoup.

import requests 
from bs4 import BeautifulSoup

url = '<https://www.example.com>' 

response = requests.get(url) 

html_content = response.text

soup = BeautifulSoup(html_content, 'html.parser')

Затем вы можете использовать методы Beautiful Soup для извлечения интересующих вас данных. Например, допустим, мы хотим извлечь заголовок сайта и список всех URL на странице:

title = soup.find('title').get_text()
url_list = [] 
links = soup.find_all('a')

for link in links: 
    url = link.get('href')
    url_list.append(url)
 
print(title, url_list)

Этот код выведет заголовок и список URL всех ссылок на странице.

Что такое Scrapy?

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

Чтобы использовать Scrapy, сначала необходимо установить его с помощью pip:

# Установить Scrapy
pip install scrapy

Затем вы можете создать новый проект Scrapy с помощью команды scrapy:

# Создать проект Scrapy
scrapy startproject myproject

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

# Generate Spider
scrapy genspider myspider

Вот пример простого спайдера, который извлекает заголовки и URL всех ссылок на веб-странице:

import scrapy

class MySpider(scrapy.Spider):
name = 'myspider'
start_urls = [''].

def parse(self, response):
links = response.css('a')
for link in links:
title = link.css('::text').get()
url = link.attrib['href']
yield {
'title': title,
'url': url,
}

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

Чтобы запустить спайдер, вы используете команду scrapy crawl:

# Запустить спайдер
scrapy crawl myspider

Расширенные возможности Scrapy

Очередь URL-адресов для сканирования

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

import scrapy
class TitleSpider(scrapy.Spider):
name = 'titlespider'
start_urls = [''].
custom_settings = {
"DEPTH_LIMIT": 5
}

def parse(self, response):
yield {
'url': response.url,
'title': response.css('title::text').extract_first(),
}
for link_href in response.css('a::attr("href")'):
yield scrapy.Request(link_href.get())

Несколько форматов вывода

Scrapy напрямую поддерживает сохранение вывода в различных форматах, таких как JSON, CSV и XML:

# Запустите спайдер и сохраните вывод в файл JSON
scrapy crawl -o myfile -t json myspider

# Запустите спайдер и сохраните вывод в CSV-файл
scrapy crawl -o myfile -t csv myspider

# Запуск спайдер и сохранение результатов в XML-файл
scrapy crawl -o myfile -t xml myspider

Cookies

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

Если вы хотите указать дополнительные cookies для ваших запросов, вы можете добавить их к создаваемому Scrapy Request:

request_with_cookies = scrapy.Request(
url="",
cookies={'currency': 'USD', 'country': 'UY'},
)

Подмена агента пользователя

Scrapy поддерживает установку пользовательского агента для всех запросов в пользовательское значение, что полезно, например, если вы хотите отсканировать мобильную версию сайта. Просто поместите пользовательский агент в файл [settings.py]() в вашем проекте, и он будет автоматически использоваться для всех запросов:

# settings.py
USER_AGENT = 'Mozilla/5.0 (Linux; Android 10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.5563.57 Mobile Safari/537.36'

Когда использовать Beautiful Soup и когда использовать Scrapy

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

Вывод

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

Артем Пелевин

Recent Posts

Сеть сайтов под РСЯ: пошаговое руководство по созданию

Краткое резюме: как превратить сеть сайтов в стабильный источник дохода Создание сети информационных сайтов —…

6 дней ago

Полное руководство по бесплатным SEO-сервисам для аудита и устранения ошибок сайта

Знаете ли вы, что невидимые технические ошибки могут «съедать» до 90% вашего потенциального трафика из…

1 неделя ago

Парсинг цен конкурентов: полное руководство по обходу блокировок и защит

Введение: почему мониторинг цен — необходимость, а защита — не преграда Представьте, что вы пытаетесь…

2 недели ago

Полное руководство по защите сайта от ботов: стратегии, технологии и правовые аспекты в России

Значительная часть трафика на любом коммерческом сайте — это не люди. Это боты, которые могут…

2 недели ago

Мониторинг цен конкурентов: полное руководство по парсингу, праву и стратегиям для бизнеса

Систематический мониторинг цен конкурентов — это не просто способ избежать ценовых войн, а доказанный инструмент…

2 недели ago

Полное руководство по парсингу и анализу отзывов с Яндекс.Карт и Google Maps

Краткое содержание В мире, где 93% потребителей читают отзывы перед покупкой 1, а рейтинг компании…

2 недели ago