Есть два интернет-супермаркета, которые предоставляют цены на различные продукты.
Вам необходимо написать программу для получения, извлечения и сравнения цен на данный продукт от этих двух поставщиков.
Пример: Цену на кокос от двух разных поставщиков можно найти на следующих веб-страницах.
laughs_coconut = 'https://scrape-sm1.github.io/site1/COCO ... super.html'
glomark_coconut = 'https://glomark.lk/coconut/p/11624'
Функция def Compare_prices(product_laughs,product_glomark) возьмет два похожих продукта от двух поставщиков и сравнит цены, чтобы порекомендовать вам какой вариант дешевле в данный момент времени.
1. Посетите ссылки в своем веб-браузере и используйте инструменты браузера «Проверить элементы» / «Просмотр исходного кода страницы», чтобы понять структуру веб-страниц, приведенных выше.
2. Выполните функцию Compare_prices, которая предварительно загружена в поле ответа, чтобы получить и извлечь значения цен с двух веб-страниц.
Пример ожидаемого результата
Laughs COCONUT - Item#mr-2058 Rs.: 89.0
Glomark Coconut Rs.: 86.0
Glomark is cheaper: 3.0
Это мой блок кода.
import requests
import json
import re
import sys
sys.path.insert(0,'bs4.zip')
from bs4 import BeautifulSoup
#Imitate the Mozilla browser.
user_agent = {'User-agent': 'Mozilla/5.0'}
# ---------------- Helper Function ----------------
def compare_prices(product_laughs, product_glomark):
# ---------------- LaughsSuper ----------------
resp_laughs = requests.get(product_laughs, headers=user_agent)
soup_laughs = BeautifulSoup(resp_laughs.text, 'html.parser')
product_name_laughs = soup_laughs.find('h1').text.strip()
# Try span.price first
price_tag = soup_laughs.find('span', class_='price')
if price_tag is None:
# If not found, try div.product-price
price_tag = soup_laughs.find('div', class_='product-price')
# Safely extract text and convert to float
price_text = price_tag.get_text()
price_laughs = float(re.search(r'\d+(\.\d+)?', price_text).group())
# ---------------- Glomark ----------------
resp_glomark = requests.get(product_glomark, headers=user_agent)
soup_glomark = BeautifulSoup(resp_glomark.text, 'html.parser')
script_tag = soup_glomark.find('script', type='application/ld+json')
data = json.loads(script_tag.string)
if isinstance(data, list):
data = data[0]
offers = data['offers']
if isinstance(offers, list):
offers = offers[0]
product_name_glomark = data['name']
price_glomark = float(offers['price'])
print('Laughs ', product_name_laughs, 'Rs.: ', price_laughs)
print('Glomark ', product_name_glomark, 'Rs.: ', price_glomark)
if price_laughs > price_glomark:
print('Glomark is cheaper Rs.:', price_laughs - price_glomark)
elif price_laughs < price_glomark:
print('Laughs is cheaper Rs.:', price_glomark - price_laughs)
else:
print('Price is the same')
Но здесь некоторые ошибки.
Ожидается
Laughs COCONUT - Item#mr-2058 Rs.: 95.0
Glomark COCONUT Rs.: 172.0
Laughs is cheaper Rs.: 77.0
Понял
Laughs COCONUT - Item#mr-2058 Rs.: 0.0
Glomark COCONUT Rs.: 172.0
Laughs is cheaper Rs.: 172.0
Ожидается
Laughs COCA COLA 2L (PET) - Item#mr-35457 Rs.: 270.0
Glomark Coca-Cola Pet 2L Rs.: 500.0
Laughs is cheaper Rs.: 230.0
Понял
Laughs COCA COLA 2L (PET) - Item#mr-35457 Rs.: 0.0
Glomark Coca-Cola Pet 2L Rs.: 500.0
Laughs is cheaper Rs.: 500.0
Подробнее здесь: https://stackoverflow.com/questions/798 ... lsoup-json
Сравните цены на продукты на двух веб-сайтах, используя Python (BeautifulSoup + JSON) ⇐ Python
Программы на Python
1771771110
Anonymous
Есть два интернет-супермаркета, которые предоставляют цены на различные продукты.
Вам необходимо написать программу для получения, извлечения и сравнения цен на данный продукт от этих двух поставщиков.
[b]Пример:[/b] Цену на кокос от двух разных поставщиков можно найти на следующих веб-страницах.
laughs_coconut = 'https://scrape-sm1.github.io/site1/COCONUT%20market1super.html'
glomark_coconut = 'https://glomark.lk/coconut/p/11624'
Функция def Compare_prices(product_laughs,product_glomark) возьмет два похожих продукта от двух поставщиков и сравнит цены, чтобы порекомендовать вам какой вариант дешевле в данный момент времени.
1. Посетите ссылки в своем веб-браузере и используйте инструменты браузера «Проверить элементы» / «Просмотр исходного кода страницы», чтобы понять структуру веб-страниц, приведенных выше.
2. Выполните функцию Compare_prices, которая предварительно загружена в поле ответа, чтобы получить и извлечь значения цен с двух веб-страниц.
Пример ожидаемого результата
Laughs COCONUT - Item#mr-2058 Rs.: 89.0
Glomark Coconut Rs.: 86.0
Glomark is cheaper: 3.0
Это мой блок кода.
import requests
import json
import re
import sys
sys.path.insert(0,'bs4.zip')
from bs4 import BeautifulSoup
#Imitate the Mozilla browser.
user_agent = {'User-agent': 'Mozilla/5.0'}
# ---------------- Helper Function ----------------
def compare_prices(product_laughs, product_glomark):
# ---------------- LaughsSuper ----------------
resp_laughs = requests.get(product_laughs, headers=user_agent)
soup_laughs = BeautifulSoup(resp_laughs.text, 'html.parser')
product_name_laughs = soup_laughs.find('h1').text.strip()
# Try span.price first
price_tag = soup_laughs.find('span', class_='price')
if price_tag is None:
# If not found, try div.product-price
price_tag = soup_laughs.find('div', class_='product-price')
# Safely extract text and convert to float
price_text = price_tag.get_text()
price_laughs = float(re.search(r'\d+(\.\d+)?', price_text).group())
# ---------------- Glomark ----------------
resp_glomark = requests.get(product_glomark, headers=user_agent)
soup_glomark = BeautifulSoup(resp_glomark.text, 'html.parser')
script_tag = soup_glomark.find('script', type='application/ld+json')
data = json.loads(script_tag.string)
if isinstance(data, list):
data = data[0]
offers = data['offers']
if isinstance(offers, list):
offers = offers[0]
product_name_glomark = data['name']
price_glomark = float(offers['price'])
print('Laughs ', product_name_laughs, 'Rs.: ', price_laughs)
print('Glomark ', product_name_glomark, 'Rs.: ', price_glomark)
if price_laughs > price_glomark:
print('Glomark is cheaper Rs.:', price_laughs - price_glomark)
elif price_laughs < price_glomark:
print('Laughs is cheaper Rs.:', price_glomark - price_laughs)
else:
print('Price is the same')
Но здесь некоторые ошибки.
[b]Ожидается[/b]
Laughs COCONUT - Item#mr-2058 Rs.: 95.0
Glomark COCONUT Rs.: 172.0
Laughs is cheaper Rs.: 77.0
[b]Понял[/b]
Laughs COCONUT - Item#mr-2058 Rs.: 0.0
Glomark COCONUT Rs.: 172.0
Laughs is cheaper Rs.: 172.0
[b]Ожидается[/b]
Laughs COCA COLA 2L (PET) - Item#mr-35457 Rs.: 270.0
Glomark Coca-Cola Pet 2L Rs.: 500.0
Laughs is cheaper Rs.: 230.0
[b]Понял[/b]
Laughs COCA COLA 2L (PET) - Item#mr-35457 Rs.: 0.0
Glomark Coca-Cola Pet 2L Rs.: 500.0
Laughs is cheaper Rs.: 500.0
Подробнее здесь: [url]https://stackoverflow.com/questions/79894012/compare-product-prices-from-two-websites-using-python-beautifulsoup-json[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия