Использовал 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.

Наслаждайтесь наукой о данных и программированием 😉