Ищете базы компаний? Приобретайте актуальные данные на нашем новом ресурсе - companylist.ru

Попробуйте, например, так: КафеПоставщикOzonСтоматологийОтелиАШАНЛЕРУАПЕТРОВИЧ

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

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

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

0.00
Этот товар имеет несколько вариаций. Опции можно выбрать на странице товара.
Диапазон цен: ₽0.00 – ₽190.00
Этот товар имеет несколько вариаций. Опции можно выбрать на странице товара.
Диапазон цен: ₽0.00 – ₽1,918.00
Этот товар имеет несколько вариаций. Опции можно выбрать на странице товара.
0.00
Этот товар имеет несколько вариаций. Опции можно выбрать на странице товара.
Диапазон цен: ₽0.00 – ₽799.00
Этот товар имеет несколько вариаций. Опции можно выбрать на странице товара.
Диапазон цен: ₽0.00 – ₽466.00
Этот товар имеет несколько вариаций. Опции можно выбрать на странице товара.
Диапазон цен: ₽0.00 – ₽53,798.00
Этот товар имеет несколько вариаций. Опции можно выбрать на странице товара.
0.00
Этот товар имеет несколько вариаций. Опции можно выбрать на странице товара.
Диапазон цен: ₽0.00 – ₽86.00
Этот товар имеет несколько вариаций. Опции можно выбрать на странице товара.
Диапазон цен: ₽0.00 – ₽1,022.00
Этот товар имеет несколько вариаций. Опции можно выбрать на странице товара.
0.00
Этот товар имеет несколько вариаций. Опции можно выбрать на странице товара.
Диапазон цен: ₽0.00 – ₽306.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 более мощный и настраиваемый, что делает его хорошим выбором для более крупных и сложных проектов по извлечению данных.

Диапазон цен: ₽0.00 – ₽799.00
Этот товар имеет несколько вариаций. Опции можно выбрать на странице товара.
Диапазон цен: ₽0.00 – ₽1,956.00
Этот товар имеет несколько вариаций. Опции можно выбрать на странице товара.
Диапазон цен: ₽0.00 – ₽858.00
Этот товар имеет несколько вариаций. Опции можно выбрать на странице товара.
Диапазон цен: ₽0.00 – ₽4,052.00
Этот товар имеет несколько вариаций. Опции можно выбрать на странице товара.
Диапазон цен: ₽0.00 – ₽1,208.00
Этот товар имеет несколько вариаций. Опции можно выбрать на странице товара.
Диапазон цен: ₽0.00 – ₽88.00
Этот товар имеет несколько вариаций. Опции можно выбрать на странице товара.
0.00
Этот товар имеет несколько вариаций. Опции можно выбрать на странице товара.
Диапазон цен: ₽0.00 – ₽692.00
Этот товар имеет несколько вариаций. Опции можно выбрать на странице товара.