Использовал BeautifulSoup для очистки данных и сохранения их в файле CSV.
Веб-скрейпинг адресов розничных магазинов Lenskart
В этом руководстве мы рассмотрим процесс парсинга веб-страниц и продемонстрируем его применение для извлечения данных о местонахождении розничного магазина. В частности, мы будем анализировать веб-сайт Lenskart, чтобы собрать информацию об их физических магазинах. Lenskart — популярный интернет-магазин, специализирующийся на очках, и у них есть множество физических магазинов в разных регионах Индии. Изучив их веб-сайт, мы можем получить ценную информацию о местонахождении их магазинов, времени работы и контактных данных.
Понимание парсинга веб-страниц
Веб-скрапинг — это процесс автоматического извлечения данных с веб-сайтов. Он включает в себя написание кода, который перемещается по HTML-структуре веб-страницы, идентифицирует соответствующие элементы данных и извлекает нужную информацию. Этот метод широко используется в различных областях, включая исследования рынка, конкурентный анализ и интеллектуальный анализ данных.
Для парсинга веб-страниц мы будем использовать следующие библиотеки на Python:
requests
: библиотека для отправки HTTP-запросов на сайт.BeautifulSoup
: мощная библиотека для анализа HTML и извлечения данных с веб-страниц.os
: библиотека для обработки файловых операций.csv
: Модуль для чтения и записи файлов CSV.
Настройка проекта
Для начала убедитесь, что у вас установлены необходимые библиотеки. Вы можете легко установить их с помощью менеджера пакетов pip
:
pip install requests pip install beautifulsoup4
После установки библиотек мы можем продолжить наш проект.
Скрапинг адресов магазинов Lenskart
Наша цель — очистить веб-сайт Lenskart и извлечь информацию о местоположении их розничных магазинов. Мы сосредоточимся на конкретных регионах Индии, таких как Дели, Уттар-Прадеш, Раджастхан, Махараштра и Карнатака.
Во-первых, мы определяем список интересующих нас местоположений:
locations = ['delhi', 'uttar pradesh', 'rajasthan', 'maharashtra', 'karnataka']
Затем мы перебираем каждое местоположение и выполняем процесс очистки. Мы создаем URL-адрес для каждого местоположения и отправляем HTTP-запрос GET для получения соответствующей веб-страницы. Затем мы используем BeautifulSoup для анализа содержимого HTML и извлечения соответствующей информации, включая названия магазинов, адреса, время работы и номера телефонов.
Вот фрагмент кода, который выполняет очистку:
import requests from bs4 import BeautifulSoup import os import csv locations = ['delhi', 'uttar pradesh', 'rajasthan', 'maharashtra', 'karnataka'] for location in locations: url = 'https://www.lenskart.com/stores/location/' + location response = requests.get(url) soup = BeautifulSoup(response.content, 'html.parser') stores = [] for store in soup.find_all('div', class_='StoreCard_imgContainer__P6NMN'): name = store.find('a', {'class' : "StoreCard_name__mrTXJ"}).text address = store.find('a', {'class' : 'StoreCard_storeAddress__PfC_v'}).text timings = store.find('div', {'class' : 'StoreCard_storeAddress__PfC_v'}).text[7:-1] phone = store.find('div', {'class' : "StoreCard_wrapper__xhJ0A"}).a.text[1:] stores.append([name, address, location.title(), timings, '', '', phone])
Стоит отметить, что фрагмент кода включает закомментированные разделы, связанные с геокодированием. Если у вас есть действительный ключ API Карт Google, вы можете раскомментировать и изменить эту часть, чтобы получить координаты широты и долготы для каждого магазина на основе его адреса.
Наконец, мы записываем очищенные данные в файл CSV с именем lenskart_stores.csv
. Мы проверяем, существует ли уже файл, и если да, то добавляем к нему информацию о магазине. В противном случае мы создаем новый файл и записываем строку заголовка вместе с данными хранилища.
if os.path.exists('lenskart_stores.csv'): if os.stat('lenskart_stores.csv').st_size > 0: with open('lenskart_stores.csv', mode='a') as file: writer = csv.writer(file) for store in stores: writer.writerow(store) else: with open('lenskart_stores.csv', mode='a') as file: writer = csv.writer(file) writer.writerow(['Store Name', 'Address', 'Location', 'Timings', 'Latitude', 'Longitude', 'Phone']) for store in stores: writer.writerow(store) else: with open('lenskart_stores.csv', mode='a') as file: writer = csv.writer(file) writer.writerow(['Store Name', 'Address', 'Location', 'Timings', 'Latitude', 'Longitude', 'Phone']) for store in stores: writer.writerow(store)
Запустив этот код, вы создадите CSV-файл (lenskart_stores.csv
), содержащий очищенную информацию магазина Lenskart для указанных местоположений.
Заключение
Веб-скрапинг — это мощный метод извлечения данных с веб-сайтов. В этом проекте мы продемонстрировали, как парсить веб-сайт Lenskart для сбора информации о местоположении их розничных магазинов. Используя такие библиотеки, как BeautifulSoup, мы перемещались по HTML-структуре веб-сайта, извлекали соответствующие элементы данных и сохраняли информацию в файле CSV.
Веб-скрапинг можно применять для различных вариантов использования, таких как исследование рынка, анализ конкурентов и сбор данных для анализа и визуализации. Тем не менее, важно помнить об условиях обслуживания веб-сайта и юридических ограничениях при очистке данных.
Не стесняйтесь исследовать и изменять код в соответствии с вашими конкретными требованиями и целями очистки. Удачного скрейпинга!
Обязательно замените 'MY_API_KEY_BUT_REQUIRES_BILLING'
вашим действительным ключом API Карт Google, если вы решите использовать функцию геокодирования. Помните, что за использование API геокодирования может взиматься плата с вашей учетной записи Google Cloud.