Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Практическое введение в основные библиотеки и фреймворки Python 2023

.pdf
Скачиваний:
8
Добавлен:
07.04.2024
Размер:
6.73 Mб
Скачать

BEAUTIFULSOUP

def parse(self, response):

for quote in response.css('div.quote'):

yield {

'text': quote.css('span.text::text').get(),

'author': quote.css('span small::text').get(),

'tags': quote.css('div.tags a.tag::text').getall(),

}

next_page = response.css('li.next a::attr(href)').get()

if next_page is not None:

yield response.follow(next_page,

self.parse)

154

BEAUTIFULSOUP

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

Чтобы запустить спайдера, перейдите в каталог quotes_scraper в командной строке или терминале и запустите сканирование цитат scrapy crawl quotes. Это запустит спайдера и выведет очищенные цитаты на вашу консоль.

Вот пример того, как может выглядеть результат:

{'text': '“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.”', 'author': 'Albert Einstein', 'tags': ['change', 'deepthoughts', 'thinking', 'world']}

{'text': '“It is our choices, Harry, that show what we truly are, far more than our abilities.”', 'author': 'J.K. Rowling', 'tags': ['abilities', 'choices']}

{'text': '“There are only two ways to live your life. One is as though nothing is a miracle. The other is as though everything is a miracle.”', 'author': 'Albert Einstein', 'tags': ['inspirational', 'life', 'live', 'miracle', 'miracles']}

Каждая цитата представлена в виде словаря с ключами для текста цитаты, автора и тегов.

За и против

За

155

BEAUTIFULSOUP

Мощная платформа веб-парсинга, которая обрабатывает асинхронные запросы и поддерживает селекторы XPath и CSS

Возможность извлекать данные из различных источников, таких как веб-сайты, API и даже базы данных

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

Включает встроенную поддержку экспорта собранных данных в различные форматы,

включая JSON, CSV и XML

Поддерживает различные варианты настройки, включая промежуточное ПО, расширения и конвейеры

Против

Крутой курс обучения, особенно для новичков, которые плохо знакомы с веб-парсингом

Требуются некоторые знания селекторов XPath и CSS для извлечения данных с веб-страниц

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

156

BEAUTIFULSOUP

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

157

SELENIUM

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

Selenium широко используется при тестировании и автоматизации веб-приложений. Она поддерживает различные языки программирования, включая Python, Java, C#, Ruby и JavaScript, и может работать с различными браузерами, такими как Chrome, Firefox, Safari и Internet Explorer.

С помощью Selenium вы можете создавать сценарии для автоматизации повторяющихся задач, таких как заполнение форм, нажатие кнопок, навигация по страницам и извлечение данных с веб-страниц.

В целом, Selenium — мощный инструмент для вебавтоматизации и тестирования, который может значительно упростить задачи, которые в противном случае были бы трудоемкими и затратными по времени.

Пример использования кода Selenium для парсинга веб-страниц:

from selenium import webdriver

from selenium.webdriver.common.by import By

# Set up the driver driver =

160

BEAUTIFULSOUP

webdriver.Chrome('path/to/chromedriver')

#Navigate to the website you want to scrape driver.get('https://www.example.com'

)

#Find the element you want to interact with and perform actions

element = driver.find_element(By.XPATH, '//button[@id="button-id"]') element.click()

#Extract the data you want from the website data_element = driver.find_element(By.XPATH,

'//div[@class="data-class"]') data = data_element.text

# Clean up and close the driver driver.quit()

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

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

За и против

За

159

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

Поддерживает широкий спектр браузеров,

включая Chrome, Firefox, Safari и Internet Explorer

Может обрабатывать динамический контент, загружаемый с помощью JavaScript, AJAX и других технологий

Поддерживает автономный просмотр, что позволяет запускать задачи парсинга без графического пользовательского интерфейса

Поддерживает различные языки программирования, включая Python, Java, Ruby

и C#

Против

Может работать медленнее, чем другие библиотеки веб-парсинга, поскольку использует автоматизацию браузера

Требует дополнительных настроек и установок по сравнению с другими библиотеками

Может быть более ресурсоемкой, поскольку для запуска требуется экземпляр браузера

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

160