post-title

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

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

Источником данных, который мы будем использовать в этой статье, будет JSON-файл, и мы будем сравнивать цены на товары, полученные от Amazon, eBay и Walmart. Наш пример данных выглядит следующим образом,

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

Оглавление

Этапы работы с веб-скраппингом для сравнения цен:

[
  {
    "last_visited": "2018-01-30T13:38:01",
    "name": "PUMA Men's Evospeed 17.4 TT Soccer Shoe",
    "amazon_price": 36.94,
    "ebay_price": 37,
    "walmart_price": 37,
    "amazon_url": "https://www.amazon.com/PUMA-Evospeed-Soccer-Ultra-Yellow-Peacoat-Orange/dp/B01J5LEMZI/",
    "ebay_url": "https://www.ebay.com/itm/PUMA-Mens-Evospeed-17-4-Tt-Soccer-Shoe/302471489090",
    "walmart_url": "https://www.walmart.com/ip/PUMA-Men-s-Evospeed-17-4-Tt-Soccer-Shoe/587074448",
    "description": "The new evospeed 17.4 is a performance football boot for players of all levels. The soft and lightweight synthetic leather on the upper keeps the boot lightweight, comfortable and ensures durability. The lightweight outsole offers the perfect balance between traction, stability and acceleration PUMA is the global athletic brand that successfully fuses influences from sport, lifestyle and fashion. PUMA's unique industry perspective delivers the unexpected in sport-lifestyle footwear, apparel and accessories, through technical innovation and revolutionary design.",
    "brand": "PUMA",
    "image": "https://images-na.ssl-images-amazon.com/images/I/61v1mylcAqL._UL1500_.jpg"
  },
  {
    "last_visited": "2018-01-30T13:38:07",
    "name": "L'Oreal Paris Skin Care Revitalift Cicacream Face Moisturizer",
    "amazon_price": 13.97,
    "ebay_price": 13.99,
    "walmart_price": 13.97,
    "amazon_url": "https://www.amazon.com/LOreal-Paris-Revitalift-Cicacream-Moisturizer/dp/B074MBDRHW",
    "ebay_url": "https://www.ebay.com/itm/LOREAL-Paris-NEW-Revitalift-Cicacream-Anti-Wrinkle-Skin-Barrier-Repair-ORIGINAL/112715734801",
    "walmart_url": "https://www.walmart.com/ip/L-Or-al-Paris-Revitalift-Cicacream-Anti-Wrinkle-Skin-Barrier-Repair/519350834",
    "description": "Skin's moisture barrier weakens with age, resulting in greater moisture loss, more prominent wrinkles and loss of firmness. Lightweight, protective cream is formulated with Pro-Retinol, a powerful wrinkle-fighting ingredient and Centella Asiatica, an herb used in traditional Chinese medicine. Strengthens and repairs skin barrier to help resist visible lines, loss of firmness and other signs of aging that a weakened skin barrier can accentuate. See visible results immediately: skin feels healthier, softer, smoother and more supple. Skin feels noticeably more hydrated. Skin barrier is stronger, helping to resist signs of aging. In two weeks: fine lines appear visibly reduced. Firmness and elasticity look noticeably improved. In four weeks: wrinkles appear less visible. Clarity and tone improves, skin exudes luminosity. Skin continues to look and feel soft, smooth, healthy.",
    "brand": "L'Oreal Paris",
    "image": "https://images-na.ssl-images-amazon.com/images/I/71Ff2vn4vjL._SL1500_.jpg"
  },
  {
    "last_visited": "2018-01-30T13:38:12",
    "name": "Adidas Dynamic Pulse By Adidas For Men",
    "amazon_price": 6.96,
    "ebay_price": 18.99,
    "walmart_price": 7,
    "amazon_url": "https://www.amazon.com/Adidas-Dynamic-Toilette-3-4-Ounce-Bottle/dp/B000VON5F2/",
    "ebay_url": "https://www.ebay.com/itm/Adidas-DYNAMIC-PULSE-Cologne-for-Men-3-4-oz-edt-3-3-Spray-New-in-BOX/252837623533",
    "walmart_url": "https://www.walmart.com/ip/Adidas-Dynamic-Pulse-for-Men-3-4-oz-EDT/28664356",
    "description": "Launched by the design house of Adidas in 1997, ADIDAS DYNAMIC PULSE is a men's fragrance that possesses a blend of A fresh scent of citrus, cedar and mint with low tones of sweet fruits, fragrant woods and tonka bean. It is recommended for daytime wear.When applying any fragrance please consider that there are several factors which can affect the natural smell of your skin and, in turn, the way a scent smells on you. For instance, your mood, stress level, age, body chemistry, diet, and current medications may all alter the scents you wear. Similarly, factor such as dry or oily skin can even affect the amount of time a fragrance will last after being applied",
    "brand": "adidas",
    "image": "https://images-na.ssl-images-amazon.com/images/I/41%2BAnOP5nbL.jpg"
  },
  {
    "last_visited": "2018-01-30T13:38:19",
    "name": "Canon EOS Rebel T6 Digital SLR Camera",
    "amazon_price": 449,
    "ebay_price": 449,
    "walmart_price": 449,
    "amazon_url": "https://www.amazon.com/Canon-Digital-Camera-18-55mm-3-5-5-6/dp/B01CO2JPYS",
    "ebay_url": "https://www.ebay.com/itm/Canon-EOS-Rebel-T6-DSLR-Camera-with-18-55mm-Lens/232596041502",
    "walmart_url": "https://www.walmart.com/ip/Canon-EOS-Rebel-T6-DSLR-Camera-with-18-55mm-Lens-Black/50820749",
    "description": "",
    "brand": "Canon",
    "image": "https://images-na.ssl-images-amazon.com/images/I/81YszfZS8%2BL._SL1500_.jpg"
  },
  {
    "last_visited": "2018-01-30T13:38:25",
    "name": "Woodland Fox Critter 36' Mylar Balloon",
    "amazon_price": 5.49,
    "ebay_price": 6.49,
    "walmart_price": 7.6,
    "amazon_url": "https://www.amazon.com/Woodland-Fox-Critter-Mylar-Balloon/dp/B00S9TKVYO",
    "ebay_url": "https://www.ebay.com/itm/Woodland-Critters-Fox-36-inch-Foil-Balloon/132058119680",
    "walmart_url": "https://www.walmart.com/ip/Woodland-Fox-Foil-Balloon/43350002",
    "description": "Celebrate any occasion with an adorable woodland fox critter balloon! 36\" Woodland Critters fox shape foil balloon.",
    "brand": "Betallic",
    "image": "https://images-na.ssl-images-amazon.com/images/I/71Z9bG-BzuL._SL1500_.jpg"
  }
]

К числу важных полей, имеющих отношение к разрабатываемому нами сценарию, относятся amazon_price, ebay_price и walmart_price.

Теперь мы увидели наши данные. Переходим к фазе разработки.

Мы будем создавать инструмент на Python 3.x, и в первую очередь будем использовать библиотеку JSON для разбора JSON и дальнейшей обработки. Инструмент обеспечивает потрясающую функциональность, выводя на печать название товара и цену на сайте. Мы импортируем библиотеку JSON для разбора JSON.

импортировать json

Теперь мы вызовем функцию open() в фрагменте кода для чтения содержимого из файла JSON,

импортировать json
 
if __name__ == '__main__':
    price_data = None
    цена = []
    with open('data.json', encoding='utf8') as f:
        price_data = f.read()
 
    if price_data is not None:
       json_price_data = json.loads(price_data)

Теперь, когда наши JSON-данные прочитаны, мы преобразуем их во встроенные структуры данных Python, для чего в коде будет вызван метод json.loads() для преобразования JSON-строки в словарь или список словарей, в зависимости от записей.

Поскольку основной целью является поиск магазина, продающего продукт по самой низкой цене, мы стремимся найти минимальную цену и другие важные данные, такие как название продукта и магазина. Информация о цене соответствующего магазина хранится в ключах amazon_price, ebay_price и Walmart_price. Чтобы найти минимальную цену для каждого товара, нам необходимо выполнить итерацию элементов прайс-листа.

for d in json_price_data:
            price.append({'name': d['name'], 'price': float(d['amazon_price']), 'url': d['amazon_url']})
            price.append({'name': d['name'], 'price': float(d['walmart_price']), 'url': d['walmart_url']})
            price.append({'name': d['name'], 'price': float(d['ebay_price']), 'url': d['ebay_url']})
            minPricedItem = min(price, key=lambda x: x['price'])
            print(minPricedItem)
            print('=================')
            price = []

Мы используем лямбды и устанавливаем ключ min(), чтобы убедиться, что сравнивается поле цены. В результате получается следующий вывод:

Давайте немного перестроим формат.

for d in json_price_data:
            price.append({'name': d['name'], 'price': d['amazon_price'], 'url': d['amazon_url']})
            price.append({'name': d['name'], 'price': d['walmart_price'], 'url': d['walmart_url']})
            price.append({'name': d['name'], 'price': d['ebay_price'], 'url': d['ebay_url']})
            minPricedItem = min(price, key=lambda x: float(x['price']))
            store_name = ''
            # Pick the store name based on url
            if 'amazon' in minPricedItem['url'].lower():
                store_name = 'Amazon'
            elif 'walmart' in minPricedItem['url'].lower():
                store_name = 'Amazon'
            elif 'ebay' in minPricedItem['url'].lower():
                store_name = 'eBay'
            print('{} is available in cheap price at {}. The price is ${}'.format(minPricedItem['name'], store_name,
                                                                                 minPricedItem['price']))
            price = []

В результате будет получен следующий результат:

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

Какой прокси-сервер лучше для веб-скрапинга для сравнения цен с помощью Python?

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

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

Выделенный прокси центр данных имеет несколько особенностей, таких как неограниченная пропускная способность и одновременные соединения, выделенные HTTP прокси для легкого общения и IP аутентификация для большей безопасности. Благодаря 99,9% времени безотказной работы, вы можете быть уверены, что выделенный центр данных всегда будет работать во время любой сессии. И последнее, но не менее важное: ProxyScrape обеспечивает отличное обслуживание клиентов и поможет вам решить проблему в течение 24-48 рабочих часов. 

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

Другая особенность ProxyScrape's residential proxy - это вращающийся прокси. Вращающийся прокси поможет вам избежать перманентного бана на вашем аккаунте, потому что ваш резидентный прокси динамически меняет ваш IP-адрес, что затрудняет для целевого сервера проверку того, используете вы прокси или нет. 

Помимо этого, другими особенностями жилого прокси являются: неограниченная пропускная способность, наряду с одновременным подключением, выделенные HTTP/s прокси, прокси в любое время сессии из-за 7 миллионов плюс прокси в пуле прокси, аутентификация имени пользователя и пароля для большей безопасности, и последнее, но не менее важное, возможность изменить страну сервера. Вы можете выбрать желаемый сервер, добавив код страны к аутентификации имени пользователя. 

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

Итак, каково наилучшее решение для лучшего HTTP-прокси для веб-скрейпинга с целью сравнения цен с помощью python? Ответом будет "квартирный прокси." Причина проста. Как было сказано выше, прокси по месту жительства - это вращающийся прокси, то есть ваш IP-адрес будет динамически меняться в течение определенного периода времени, что может помочь обмануть сервер, отправив большое количество запросов за небольшой промежуток времени и не получив блокировку IP-адреса. 

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

Предлагаемое чтение:

  1. Соскабливание комментариев YouTube - 5 простых шагов
  2. Топ-8 лучших инструментов для веб-скрапинга на Python в 2023 году
  3. Веб-скрепинг для новостных статей с помощью Python - лучший способ в 2023 году

Вопросы и ответы:

1. Что такое ценовой скретчинг?

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

2. Какой прокси-сервер лучше всего подходит для веб-скреппинга для сравнения цен?

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

3. Законен ли веб-скрепинг для сравнения цен?

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

Заключение

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