темный логотип proxyscrape

Веб-скрапинг для сравнения цен в 2024 году - простые шаги

Python, Скрапинг, Мар-06-20245 минут чтения

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

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

В этой статье мы создадим удивительный инструмент для сравнения цен на 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()
 
   если price_data не 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 является одним из самых популярных и надежных прокси-провайдеров в Интернете. Три прокси-сервиса включают в себя выделенные прокси-серверы в дата-центрах, прокси-серверы для жилых домов и премиум-прокси-серверы. Итак, что же является наилучшим решением для лучшего HTTP-прокси для веб-скрейпинга для сравнения цен с помощью python? Прежде чем ответить на этот вопрос, лучше всего ознакомиться с особенностями каждого прокси-сервера.

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

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

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

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

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

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

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

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

Рекомендованное чтение:

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

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

1. Что такое ценовой скраппинг?
Ценовой скретчинг, как следует из названия, - это процесс извлечения цены на товар или услугу в Интернете для проведения какого-либо анализа, например анализа конкурентов, с целью улучшения маркетинговой стратегии. Автоматизация процесса извлечения цен может помочь вам сократить время и ресурсы, и вы можете сделать это с помощью python.
2. Какой прокси-сервер лучше всего подходит для веб-скрапинга для сравнения цен?
Лучший прокси для выполнения веб-скреппинга для сравнения цен - это "жилой прокси". Причина в том, что "жилой" прокси - это вращающийся прокси, то есть ваш IP-адрес будет динамически меняться в течение определенного периода времени, что может помочь обмануть сервер, отправив много запросов за небольшой промежуток времени и не получив блокировку IP-адреса.
3. Законен ли веб-скрепинг для сравнения цен?
Ответ - да. Вы можете соскоблить цену с сайта электронной коммерции, поскольку вся информация находится в открытом доступе, а значит, все открытые данные могут быть соскоблены.

Заключение

This article explored one more wonder of web scraping, i.e. “Price Comparison”. Not only this, we have built a tool that can do the price comparison job for you and keep you updated with the market trends. This article hopes to give enough information on web scraping for price comparison in an easy way. A proxy server is the best companion for web scraping. ProxyScrape provides best in a class residential proxy for your web scraping for price comparison projects. You can check the best residential proxy here.