Навигация по цифровому шоссе: использование веб-скрейпинга для расшифровки тенденций продаж автомобилей.

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

Общие сведения о парсинге веб-страниц

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

Преимущества веб-парсинга данных о продажах автомобилей

  1. Комплексный сбор данных. Веб-скрапинг позволяет собирать огромные объемы данных о продажах автомобилей из разных источников, обеспечивая целостное представление о рынке.
  2. Статистика в режиме реального времени. Автоматизируя сбор данных, вы можете получать обновления в режиме реального времени о тенденциях продаж автомобилей, гарантируя, что ваши решения будут основаны на самой последней информации.
  3. Анализ конкурентов. Анализ веб-страниц позволяет отслеживать предложения и стратегии ценообразования ваших конкурентов, помогая разрабатывать конкурентоспособные модели ценообразования.
  4. Прогнозирование спроса. Анализ исторических данных о продажах автомобилей с помощью веб-скрапинга может помочь в прогнозировании моделей будущего спроса и управлении запасами.

Проблемы и соображения

  1. Качество данных. Веб-сайты могут использовать разные форматы и структуры для отображения данных, что приводит к несоответствиям в извлеченных данных. Очистка и структурирование данных является важным шагом.
  2. Юридические и этические проблемы. Условия использования веб-сайтов могут запрещать или ограничивать парсинг. Обеспечьте соблюдение правовых и этических норм, чтобы избежать потенциальных юридических проблем.
  3. Динамические веб-сайты. Некоторые веб-сайты используют методы динамической загрузки контента, что затрудняет сбор данных традиционными методами. Могут потребоваться курсы повышения квалификации.
  4. Блокировка IP-адресов и ограничение скорости. Частый и агрессивный парсинг может привести к блокировке IP-адресов или ограничению скорости веб-сайтами, что затруднит сбор данных.
  5. Техническое обслуживание. Веб-сайты часто обновляются или переделываются, что может нарушить работу ваших скриптов парсинга. Регулярное техническое обслуживание необходимо для обеспечения непрерывного сбора данных.

Шаги к веб-сканированию таблиц данных о продажах автомобилей

  1. Выберите целевой веб-сайт. Определите надежные веб-сайты, которые предоставляют данные о продажах автомобилей. Популярны такие сайты, как Edmunds, AutoTrader и Kelley Blue Book. В этом проекте данные о продажах автомобилей в США за 2023 год взяты из Интернета с сайта goodcarbadcar.net.
  2. Проверка структуры страницы. Используйте инструменты разработчика браузера для проверки структуры веб-страницы, содержащей нужные данные. Определите элементы и классы HTML, содержащие соответствующую информацию.
  3. Выберите инструмент или библиотеку для парсинга: библиотеки Python, такие как Beautiful Soup и Scrapy, обычно используются для парсинга веб-страниц. Они предоставляют инструменты для анализа и извлечения данных из содержимого HTML.
import requests
import pandas as pd
from bs4 import BeautifulSoup4

4. Написать код парсинга. Разработайте код для перехода на целевую страницу, извлеките элементы данных и сохраните их в структурированном формате, например в файле CSV или JSON.

# Downloading contents of the web page
url = "https://www.goodcarbadcar.net/2023-us-vehicle-sales-figures-by-model/"

# Get Request
response = requests.get(url)

# Status Code
response.status_code
 
# Soup Object
soup = BeautifulSoup(response.content, 'html.parser')

# Results
results = soup.find_all('div', {'class' : 'vehicle-card'})

# Target necessary data. 

# Name
results[0].find('h2').get_text()
# Dealer Name
results[0].find('div', {'class':'dealer-name'}).get_text().strip
# Rating
results[0].find('span', {'class':'sds-rating__count'}).get_text()
# Review Count
results[0].find('span', {'class':'sds-rating__link'}).get_text()
# Price
results[0].find('span', {'class':'primary-price'}).get_text()

# Put everything together inside a For-Loop
name = []
dealer_name = []
rating = []
review_count = []
price = []

for result in results:
    
    # name
    try:
        name.append(result.find('h2').get_text()) 
    except:
        name.append('n/a')
    
    # dealer_name
    try:
        dealer_name.append(result.find('div', {'class':'dealer-name'}).get_text().strip())
    except:
        dealer_name.append('n/a')
        
    # rating
    try:
        rating.append(result.find('span', {'class':'sds-rating__count'}).get_text())
    except:
        rating.append('n/a')
    
    # review_count
    try:
        review_count.append(result.find('span', {'class':'sds-rating__link'}).get_text())
    except:
        review_count.append('n/a')
    
    #price 
    try:
        price.append(result.find('span', {'class':'primary-price'}).get_text())
    except:
        price.append('n/a')

# Create Pandas Dataframe
# dictionary
car_dealer = pd.DataFrame({'Name': name, 'Dealer Name':dealer_name,
                                'Rating': rating, 'Review Count': review_count, 'Price': price})
# Output in Excel
car_dealer.to_excel('car_dealer_single_page.xlsx', index=False)

# Pagination
name = []
mileage = []
dealer_name = []
rating = []
review_count = []
price = []

for i in range (1,11):
    
    # website in variable
    website = 'https://www.cars.com/shopping/results/?page='+ str(i) +'&page_size=20&dealer_id=&list_price_max=&list_price_min=&makes[]=mercedes_benz&maximum_distance=20&mileage_max=&sort=best_match_desc&stock_type=cpo&year_max=&year_min=&zip=' 
    
    # request to website
    response = requests.get(website)
    
    # soup object
    soup = BeautifulSoup(response.content, 'html.parser')
    
    # results
    results = soup.find_all('div', {'class' : 'vehicle-card'})
    
    # loop through results
    for result in results:
    
        # name
        try:
            name.append(result.find('h2').get_text()) 
        except:
            name.append('n/a')

        # mileage
        try:
            mileage.append(result.find('div', {'class':'mileage'}).get_text())
        except:
            mileage.append('n/a')

        # dealer_name
        try:
            dealer_name.append(result.find('div', {'class':'dealer-name'}).get_text().strip())
        except:
            dealer_name.append('n/a')

        # rating
        try:
            rating.append(result.find('span', {'class':'sds-rating__count'}).get_text())
        except:
            rating.append('n/a')

        # review_count
        try:
            review_count.append(result.find('span', {'class':'sds-rating__link'}).get_text())
        except:
            review_count.append('n/a')

        #price 
        try:
            price.append(result.find('span', {'class':'primary-price'}).get_text())
        except:
            price.append('n/a')
# dictionary
car_dealer = pd.DataFrame({'Name': name, 'Mileage':mileage, 'Dealer Name':dealer_name,
                                'Rating': rating, 'Review Count': review_count, 'Price': price})
car_dealer.to_excel('car_dealer_single_page.xlsx', index=False)

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

Заключение

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

Спасибо за чтение. Хлопайте👏 и подписывайтесь на меня, если найдете это полезным😊.

"Продолжайте учиться и продолжайте делиться знаниями".