Парсинг веб-страниц с помощью Python...👨💻
Table Of Content
В наше время данные являются топливом, а аналитика - двигателем новой экономики. Хорошие данные позволяют организациям устанавливать базовые показатели, ориентиры и цели для продвижения вперед. Благодаря данным, которые можно измерить, вы сможете установить базовые показатели, найти ориентиры и установить цели производительности. Одной из лучших техник для получения данных является парсинг веб-страниц. Парсинг веб-страниц используется в различных цифровых бизнесах, основанных на сборе данных.
Определение и использование:
Парсинг веб-страниц - это процесс использования ботов для извлечения контента и данных с веб-сайта. В отличие от скрин-скрапинга, который копирует только пиксели, отображаемые на экране, парсинг веб-страниц извлекает базовый HTML-код и с ним данные, хранящиеся в базе данных.
Использование:
- Поисковые боты, которые обходят сайт, анализируют его содержимое и затем ранжируют его.
- Сайты сравнения цен, использующие ботов для автоматического получения цен и описаний товаров с сайтов продавцов.
- Компании по маркетинговым исследованиям, использующие парсеры для извлечения данных из форумов и социальных медиа (например, для анализа настроений).
Библиотеки Python, используемые для парсинга веб-страниц:
- Selenium: Selenium - это библиотека для тестирования веб-приложений. Она используется для автоматизации действий в браузере.
- BeautifulSoup: Beautiful Soup - это пакет Python для разбора HTML- и XML-документов. Он создает деревья разбора, которые удобно использовать для извлечения данных.
- Pandas: Pandas - это библиотека, используемая для манипулирования и анализа данных. Она используется для извлечения данных и их сохранения в нужном формате.
- Requests: Модуль requests позволяет отправлять HTTP-запросы с использованием Python. HTTP-запрос возвращает объект Response с данными ответа (содержимое, кодировку, статус и т. д.).
Реализация
Давайте реализуем простой веб-парсер на Python с использованием указанных библиотек. Установите все указанные библиотеки с помощью pip.
Мы будем использовать сайт электронной коммерции для получения данных о продукте.
Импорт зависимостей:
import pandas as pd
from selenium import webdriver
from bs4 import BeautifulSoup
Настройте Chrome WebDriver для использования браузера Chrome. Установите путь к chromedriver.exe, который можно скачать здесь.
Теперь мы перейдем на веб-сайт, с которого мы будем парсить данные. В качестве примера здесь мы используем Bewakoof (онлайн-магазин) для получения данных о цене рубашек.
В вашем блокноте создайте 3 пустых списка, как показано ниже.
product_names = []
actual_prices = []
discounted_prices = []
Парсинг данных
Скопируйте URL веб-страницы и вставьте его в параметры функции get(). Здесь driver.get() получает весь исходный код веб-страницы, который вы можете увидеть с помощью инструмента "Инспектор".
driver = webdriver.Chrome('path/to/chromedriver.exe')
driver.get('https://www.bewakoof.com/men-t-shirts')
content = driver.page_source
soup = BeautifulSoup(content)
Теперь у нас есть весь исходный код веб-страницы в виде soup. Теперь мы будем парсить данные, которые нам нужны (в данном случае, данные о цене и названии продукта).
Выполните эту операцию, которая получит все данные и сохранит их в вышеуказанные пустые списки.
for product in soup.findAll('div', attrs={'class':'product-card'}):
name = product.find('h3', attrs={'class':'product-title'}).text
price = product.find('span', attrs={'class':'product-price'}).text
discount = product.find('span', attrs={'class':'product-discountedPrice'}).text
product_names.append(name)
actual_prices.append(price)
discounted_prices.append(discount)
Затем преобразуем списки в DataFrame с помощью pandas.
data = pd.DataFrame({'Product Name': product_names, 'Actual Price': actual_prices, 'Discounted Price': discounted_prices})
Ура! Мы получили все цены на актуальные и скидочные продукты на веб-странице. Теперь поместим эти данные в CSV-файл для сохранения и использования в аналитических целях.
Выполните эту операцию для сохранения в CSV-файл.
data.to_csv('scraped_products.csv', index=False)
Заключение
Вот как мы можем собирать данные с любой веб-страницы, используя Selenium и BeautifulSoup. Это очень просто. Практикуйтесь. Узнавайте больше..!!
Ссылка на GitHub:
https://github.com/AshishTrada/data-science/tree/main/web-scraping