Web scraping с помощью Python: краткое руководство

Web scraping с помощью Python Программирование и разработка

Интернет, возможно, является самым богатым источником данных, к которому вы можете получить доступ сегодня. Самостоятельное сканирование этой огромной паутины информации потребует сверхчеловеческих усилий. Так почему бы не создать парсер, который будет выполнять за вас детективную работу? Автоматический просмотр веб-страниц — отличный способ собрать релевантные данные со многих веб-страниц за относительно короткий промежуток времени.

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

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

Обзор: парсинг Web scraping с помощью Python

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

Читайте также:  Как в Python повторить строку n раз?

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

Что такое Web scraping?

Веб-скрапинг — это процесс извлечения пригодных для использования данных с разных веб-страниц для анализа, сравнения и многих других целей. Типы данных, которые можно собирать, варьируются от текста, изображений, рейтингов, URL-адресов и т. д. Веб-скрейперы извлекают эти данные, загружая URL-адрес и загружая код HTML для этой страницы. Усовершенствованные парсеры также способны извлекать код CSS и JavaScript с веб-страницы.

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

Законность

Пока данные, которые вы очищаете, не требуют учетной записи для доступа, не блокируются robots.txtфайлом и общедоступны, это считается честной игрой.

В чем разница между web crawler и web scraper?

Поисковый робот просто собирает данные (обычно для архивирования или индексирования), в то время как поисковые роботы ищут определенные типы данных для сбора, анализа и преобразования.

Для чего можно использовать web scraper?

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

Вот некоторые другие реальные приложения парсинга веб-страниц:

  • Обработка естественного языка
  • Машинное обучение
  • Предиктивная аналитика
  • Аналитика в реальном времени
  • Мониторинг цен
  • Агрегация финансовых данных
  • Соскабливание текста песни
  • Отслеживание цен на акции
  • Получение изображений и описаний товаров
  • Анализ потребительских настроений
  • Мониторинг поисковой оптимизации (SEO)

Как работает парсинг в Интернете?

Веб-скрапинг включает в себя три этапа:

  • Сбор данных. На этом этапе данные собираются с веб-страниц (обычно с помощью поискового робота).
  • Анализ и преобразование данных. Следующий шаг включает преобразование собранного набора данных в формат, который можно использовать для дальнейшего анализа (например, в электронную таблицу или файл JSON).
  • Хранение данных. Последний этап парсинга веб-страниц включает сохранение преобразованных данных в файле JSON, XML или CSV.

Какие инструменты и библиотеки используются для очистки Интернета?

Это одни из самых популярных инструментов и библиотек, используемых для очистки Интернета с помощью Python.

  • Beautiful Soup : популярная библиотека Python, используемая для извлечения данных из файлов HTML и XML.
  • MechanicalSoup : еще одна библиотека Python, используемая для автоматизации взаимодействия на веб-сайтах (например, отправки форм).
  • Scrapy : высокоскоростная платформа для сканирования и парсинга веб -страниц с открытым исходным кодом.
  • Selenium : набор инструментов автоматизации с открытым исходным кодом, который предоставляет API для написания приемочных или функциональных тестов.
  • Запросы Python : библиотека запросов позволяет пользователям отправлять запросы HTTP/1.1 без необходимости прикреплять строки запроса к URL-адресам или формировать данные POST.
  • LXML : инструмент, используемый для обработки XML и HTML на языке Python.
  • Urllib : пакет, используемый для открытия URL -адресов.
  • Pandas: обычно не используется для парсинга, но полезен для анализа, обработки и хранения данных.

Однако для целей этого руководства мы сосредоточимся только на трех: Beautiful Soup 4 (BS4), Selenium и модуле Statistics.py .

Создайте Web scraping с помощью Python

Допустим, мы хотим сравнить цены на женские джинсы на Madewell и NET-A-PORTER, чтобы увидеть, у кого цена лучше.

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

Шаг 1. Выберите URL-адреса, которые вы хотите очистить

Как для Madewell, так и для NET-A-PORTER вам нужно получить целевой URL-адрес с их веб-страницы для женских джинсов.

Для Madewell этот URL-адрес:

https://www.madewell.com/womens/clothing/jeans

Для NET-A-PORTER ваш URL будет следующим:

https://www.net-a-porter.com/en-us/

Шаг 2. Найдите HTML-контент, который вы хотите очистить

После того, как вы выбрали свои URL-адреса, вам нужно выяснить, под какими HTML-тегами или атрибутами будут расположены нужные вам данные. На этом этапе вам нужно проверить источник вашей веб-страницы (или открыть панель инструментов разработчика).

Вы можете сделать это, щелкнув правой кнопкой мыши страницу, на которой вы находитесь, и выбрав «Проверить» в раскрывающемся меню.

Ярлык Google Chrome : Ctrl + Shift + Cдля Windows или Command + Shift + CMacOS позволит вам просмотреть HTML-код для этого шага.

В данном случае мы ищем цену на джинсы. Если вы просмотрите документ HTML, вы заметите, что эта информация доступна под тегом как для Madewell, так и для NET-A-PORTER.

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

Для Madewell лучшим HTML-атрибутом будет:

product-sales-price product-usd

Для NET-A-PORTER мы хотели бы сузить нашу цель с помощью:

itemprop

Шаг 3: Выберите инструменты и библиотеки

Для этой задачи мы будем использовать библиотеки Selenium и Beautiful Soup 4 (BS4) в дополнение к модулю Statistics.py . Вот краткий обзор того, почему мы выбрали эти инструменты веб-скрейпинга:

Selenium

Selenium может автоматически открывать веб-браузер и запускать в нем задачи с помощью простого скрипта. Для библиотеки Selenium требуется доступ к драйверу веб-браузера, поэтому мы решили использовать Google Chrome и загрузили его драйверы отсюда: Загрузки ChromeDriver.

BS4

Мы используем BS4 со встроенным в Python парсером HTML, потому что он прост и удобен для начинающих. Объект BS4 дает нам доступ к инструментам, которые могут очищать любой данный веб-сайт с помощью его тегов и атрибутов.

Scrapy — еще одна библиотека Python, которая подошла бы для этой задачи, но она немного сложнее, чем BS4.

Модуль statistics.pyсодержит методы расчета математической статистики числовых данных.

Метод Описание
statistics.mean() Вычисляет среднее (среднее) заданных данных

Шаг 4: Создайте свой парсер на Python

4a: Импортируйте свои библиотеки

Во- первых, вам нужно импортировать statistics, requests, webdriverиз seleniumи beautifulsoup библиотеку.

from bs4 import BeautifulSoup
from selenium import webdriver
import requests
import statistics

4b: Создайте объект драйвера Google Chrome

PATH = r'/usercode/chromedriver'
driver = webdriver.Chrome(PATH)

4c: Получить данные веб-сайта NET-A-PORTER по их URL-адресу с помощью driver.getметода

driver.get("https://www.net-a-porter.com/en-us/shop/clothing/jeans")

4d: создать beautifulsoupобъект

Здесь мы создаем beautifulsoupобъект с исходным кодом HTML в качестве driver.page_sourceи встроенным в Python парсером HTML в html.parserкачестве аргументов. Это запускает поиск парсером определенных тегов и атрибутов.

soup = BeautifulSoup(driver.page_source),
'html.parser')
   response = soup.find_all("span", {"itemprop" : "price"})

4e: Сохраните данные о ценах в список, а затем распечатайте его.

data = []
   for item in response: 
       data.append(float(item.text.strip("\n$)))

   print(data)

4f: вывести среднее значение ваших данных с каждого веб-сайта

print(statistics.mean(extracted_data1))
print(statistics.mean(extracted_data2))

Завершенный код

from bs4 import BeautifulSoup
from selenium import webdriver
import statistics
 
 
def shop1():
   PATH = r'/usercode/chromedriver'
   driver = webdriver.Chrome(PATH)
   driver.get("https://www.net-a-porter.com/en-us/shop/clothing/jeans")
 
   soup = BeautifulSoup(driver.page_source, 'html.parser')
   response = soup.find_all("span", {"itemprop" : "price"})
   data = []
 
   for item in response:
       data.append(float(item.text.strip('$')))
 
   print(data)
   return data
 
def shop2():
   PATH = r'usercode/chromedriver'
   driver = webdriver.Chrome(PATH)
   driver.get("https://www.madewell.com/womens/clothing/jeans")
 
   soup = BeautifulSoup(driver.page_source, 'html.parser')
   response = soup.find_all("span", "product-sales-price product-usd")
  
   data = []
 
   for item in response:
       data.append(float(item.text.strip("\n$")))
 
   print(data)
   return data
 
extracted_data1 = shop1()
extracted_data2 = shop2()
 
print(statistics.mean(extracted_data1))
print(statistics.mean(extracted_data2))

Шаг 5: Повторите для Мэдвелл

Используя приведенный выше код, вы можете повторить шаги для Madewell. В качестве краткого напоминания, вот основные шаги, которые вам необходимо выполнить:

  1. Назначьте путь к файлу веб-драйвера переменной пути
  2. Используя Selenium, создайте объект драйвера
  3. Получить исходный код страницы с помощью getметода объекта драйвера
  4. Создайте объект BS4 с исходным кодом HTML, используя pagesourceметод и встроенный анализатор HTML Python в html.parserкачестве аргументов.
  5. Используйте find_allметод для извлечения данных в тегах, которые вы определили, в список.
  6. Очистите извлеченные данные с помощью.textи.strip()
  7. Добавьте данные в список для сравнения
Оцените статью
bestprogrammer.ru
Добавить комментарий