Подгрузка данных на сайте
https://www.mechta.kz/section/smartfony/
На этом сайте цена на товар подгружается через скрипт
Я получаю ссылку на список товаров, но там не показывает цены правильно, то есть там указана цена которая зачеркнута, а которая актуальна, ее нет там
https://www.mechta.kz/api/new/catalog?properties=&page=1§ion=smartfony Вот пример первой страницы
Мне нужно как-то получать актуальную цену, а не старую
Тут в catalog указано правильно, старая цена (base_price) и актуальная (disscounted_price), но нет названия товара и ссылка нерабочая https://www.mechta.kz/api/new/mindbox/actions/catalog
Вот, если я указываю https://www.mechta.kz/section/smartfony/ такую ссылку, то есть на сам каталог, то у меня в терминале выдает огромный текст (На скрине)
А если указывать ссылку json, то работает нормально, но мне нужна ссылка каталога
Ответы (1 шт):
Для ссылки https://www.mechta.kz/api/new/mindbox/actions/catalog нужно отправлять POST запрос (а браузер, если ходишь сам по ссылкам, отправляет GET) и данные с product_ids, содержащим id товаров, разделенные запятой
Пример:
import requests
data = {
'product_ids': '56926,422,22798,31305,40377,415,20117,428,5743,27826,37805,47800,11556,56940,30333,38375,20573,22826,36079,2061,9827,5483,31585,3048,63175,44262,12590,23704,40692,48877,27627,41868,425,67464',
}
rs = requests.post('https://www.mechta.kz/api/new/mindbox/actions/catalog', data=data)
print(rs.json())
# {'result': True, 'errors': [], 'data': {'415': {'id': 415, 'bonus': 12700, 'prices': {'base_price': 634990, 'discounted_price': 634990, 'has_discount': False}, 'has_gift': False}, '422': {'id': 422, 'bonus': 13900, 'prices': {'base_price': 694990, 'discounted_price': 694990, 'has_discount': False}, 'has_gift': False}, '425': {'id': 425, 'bonus': 16500, 'prices': {'base_price': 824990, 'discounted_price': 824990, 'has_discount': False}, 'has_gift': False}, '428': {'id': 428, 'bonus': 19000, 'prices': {'base_price': 949990, 'discounted_price': 949990, 'has_discount': False}, 'has_gift': False}, '2061': {'id': 2061, 'bonus': 6989, 'prices': {'base_price': 74890, 'discounted_price': 69890, 'has_discount': True}, 'has_gift': False}, '3048': {'id': 3048, 'bonus': 9500, 'prices': {'base_price': 474990, 'discounted_price': 474990, 'has_discount': False}, 'has_gift': False}, '5483': {'id': 5483, 'bonus': 8700, 'prices': {'base_price': 434990, 'discounted_price': 434990, 'has_discount': False}, 'has_gift': False}, '5743': {'id': 5743, 'bonus': 4489, 'prices': {'base_price': 54890, 'discounted_price': 44890, 'has_discount': True}, 'has_gift': False}, '9827': {'id': 9827, 'bonus': 6800, 'prices': {'base_price': 339990, 'discounted_price': 339990, 'has_discount': False}, 'has_gift': False}, '11556': {'id': 11556, 'bonus': 8195, 'prices': {'base_price': 409990, 'discounted_price': 409990, 'has_discount': False}, 'has_gift': False}, '12590': {'id': 12590, 'bonus': 6800, 'prices': {'base_price': 339990, 'discounted_price': 339990, 'has_discount': False}, 'has_gift': False}, '20117': {'id': 20117, 'bonus': 6200, 'prices': {'base_price': 309990, 'discounted_price': 309990, 'has_discount': False}, 'has_gift': False}, '20573': {'id': 20573, 'bonus': 17999, 'prices': {'base_price': 219890, 'discounted_price': 179990, 'has_discount': True}, 'has_gift': False}, '22798': {'id': 22798, 'bonus': 3000, 'prices': {'base_price': 149990, 'discounted_price': 149990, 'has_discount': False}, 'has_gift': False}, '22826': {'id': 22826, 'bonus': 2000, 'prices': {'base_price': 99990, 'discounted_price': 99990, 'has_discount': False}, 'has_gift': False}, '23704': {'id': 23704, 'bonus': 6800, 'prices': {'base_price': 339990, 'discounted_price': 339990, 'has_discount': False}, 'has_gift': False}, '27627': {'id': 27627, 'bonus': 5000, 'prices': {'base_price': 249990, 'discounted_price': 249990, 'has_discount': False}, 'has_gift': False}, '27826': {'id': 27826, 'bonus': 60988, 'prices': {'base_price': 649890, 'discounted_price': 609890, 'has_discount': True}, 'has_gift': True}, '30333': {'id': 30333, 'bonus': 6200, 'prices': {'base_price': 309990, 'discounted_price': 309990, 'has_discount': False}, 'has_gift': False}, '31305': {'id': 31305, 'bonus': 5989, 'prices': {'base_price': 64890, 'discounted_price': 59890, 'has_discount': True}, 'has_gift': False}, '31585': {'id': 31585, 'bonus': 10800, 'prices': {'base_price': 539990, 'discounted_price': 539990, 'has_discount': False}, 'has_gift': False}, '36079': {'id': 36079, 'bonus': 9500, 'prices': {'base_price': 474990, 'discounted_price': 474990, 'has_discount': False}, 'has_gift': False}, '37805': {'id': 37805, 'bonus': 14989, 'prices': {'base_price': 179890, 'discounted_price': 149890, 'has_discount': True}, 'has_gift': False}, '38375': {'id': 38375, 'bonus': 1800, 'prices': {'base_price': 89990, 'discounted_price': 89990, 'has_discount': False}, 'has_gift': False}, '40377': {'id': 40377, 'bonus': 6999, 'prices': {'base_price': 129890, 'discounted_price': 69990, 'has_discount': True}, 'has_gift': False}, '40692': {'id': 40692, 'bonus': 8700, 'prices': {'base_price': 434990, 'discounted_price': 434990, 'has_discount': False}, 'has_gift': False}, '41868': {'id': 41868, 'bonus': 27989, 'prices': {'base_price': 279890, 'discounted_price': 279890, 'has_discount': False}, 'has_gift': True}, '44262': {'id': 44262, 'bonus': 11798, 'prices': {'base_price': 589890, 'discounted_price': 589890, 'has_discount': False}, 'has_gift': False}, '47800': {'id': 47800, 'bonus': 6800, 'prices': {'base_price': 339990, 'discounted_price': 339990, 'has_discount': False}, 'has_gift': False}, '48877': {'id': 48877, 'bonus': 33989, 'prices': {'base_price': 409890, 'discounted_price': 339890, 'has_discount': True}, 'has_gift': True}, '56926': {'id': 56926, 'bonus': 6800, 'prices': {'base_price': 339990, 'discounted_price': 339990, 'has_discount': False}, 'has_gift': False}, '56940': {'id': 56940, 'bonus': 88889, 'prices': {'base_price': 999890, 'discounted_price': 888888, 'has_discount': True}, 'has_gift': True}, '63175': {'id': 63175, 'bonus': 33989, 'prices': {'base_price': 409890, 'discounted_price': 339890, 'has_discount': True}, 'has_gift': True}, '67464': {'id': 67464, 'bonus': 8200, 'prices': {'base_price': 409990, 'discounted_price': 409990, 'has_discount': False}, 'has_gift': False}}}
В этом примере сначала используется https://www.mechta.kz/api/new/catalog?properties=&page=1§ion=smartfony, чтобы собрать id товаров, после https://www.mechta.kz/api/new/mindbox/actions/catalog:
url = 'https://www.mechta.kz/api/new/catalog?properties=&page=1§ion=smartfony'
rs = requests.get(url)
product_ids = ','.join(str(x['id']) for x in rs.json()['data']['items'])
data = {
'product_ids': product_ids
}
rs = requests.post('https://www.mechta.kz/api/new/mindbox/actions/catalog', data=data)
print(rs.json())
# {'result': True, 'errors': [], 'data': {'415': {'id': 415, 'bonus': 12700, 'prices': {'base_price': 634990, 'discounted_price': 634990, 'has_discount': False}, 'has_gift': False}, '422': {'id': 422, 'bonus': 13900, 'prices': {'base_price': 694990, 'discounted_price': 694990, 'has_discount': False}, 'has_gift': False}, '425': {'id': 425, 'bonus': 16500, 'prices': {'base_price': 824990, 'discounted_price': 824990, 'has_discount': False}, 'has_gift': False}, '428': {'id': 428, 'bonus': 19000, 'prices': {'base_price': 949990, 'discounted_price': 949990, 'has_discount': False}, 'has_gift': False}, '2061': {'id': 2061, 'bonus': 6989, 'prices': {'base_price': 74890, 'discounted_price': 69890, 'has_discount': True}, 'has_gift': False}, '3048': {'id': 3048, 'bonus': 9500, 'prices': {'base_price': 474990, 'discounted_price': 474990, 'has_discount': False}, 'has_gift': False}, '5483': {'id': 5483, 'bonus': 8700, 'prices': {'base_price': 434990, 'discounted_price': 434990, 'has_discount': False}, 'has_gift': False}, '5743': {'id': 5743, 'bonus': 4489, 'prices': {'base_price': 54890, 'discounted_price': 44890, 'has_discount': True}, 'has_gift': False}, '9827': {'id': 9827, 'bonus': 6800, 'prices': {'base_price': 339990, 'discounted_price': 339990, 'has_discount': False}, 'has_gift': False}, '11556': {'id': 11556, 'bonus': 8195, 'prices': {'base_price': 409990, 'discounted_price': 409990, 'has_discount': False}, 'has_gift': False}, '12590': {'id': 12590, 'bonus': 6800, 'prices': {'base_price': 339990, 'discounted_price': 339990, 'has_discount': False}, 'has_gift': False}, '20117': {'id': 20117, 'bonus': 6200, 'prices': {'base_price': 309990, 'discounted_price': 309990, 'has_discount': False}, 'has_gift': False}, '20573': {'id': 20573, 'bonus': 17999, 'prices': {'base_price': 219890, 'discounted_price': 179990, 'has_discount': True}, 'has_gift': False}, '22798': {'id': 22798, 'bonus': 3000, 'prices': {'base_price': 149990, 'discounted_price': 149990, 'has_discount': False}, 'has_gift': False}, '22826': {'id': 22826, 'bonus': 2000, 'prices': {'base_price': 99990, 'discounted_price': 99990, 'has_discount': False}, 'has_gift': False}, '23704': {'id': 23704, 'bonus': 6800, 'prices': {'base_price': 339990, 'discounted_price': 339990, 'has_discount': False}, 'has_gift': False}, '27627': {'id': 27627, 'bonus': 5000, 'prices': {'base_price': 249990, 'discounted_price': 249990, 'has_discount': False}, 'has_gift': False}, '27826': {'id': 27826, 'bonus': 60988, 'prices': {'base_price': 649890, 'discounted_price': 609890, 'has_discount': True}, 'has_gift': True}, '30333': {'id': 30333, 'bonus': 6200, 'prices': {'base_price': 309990, 'discounted_price': 309990, 'has_discount': False}, 'has_gift': False}, '31305': {'id': 31305, 'bonus': 5989, 'prices': {'base_price': 64890, 'discounted_price': 59890, 'has_discount': True}, 'has_gift': False}, '31585': {'id': 31585, 'bonus': 10800, 'prices': {'base_price': 539990, 'discounted_price': 539990, 'has_discount': False}, 'has_gift': False}, '36079': {'id': 36079, 'bonus': 9500, 'prices': {'base_price': 474990, 'discounted_price': 474990, 'has_discount': False}, 'has_gift': False}, '37805': {'id': 37805, 'bonus': 14989, 'prices': {'base_price': 179890, 'discounted_price': 149890, 'has_discount': True}, 'has_gift': False}, '38375': {'id': 38375, 'bonus': 1800, 'prices': {'base_price': 89990, 'discounted_price': 89990, 'has_discount': False}, 'has_gift': False}, '40377': {'id': 40377, 'bonus': 6999, 'prices': {'base_price': 129890, 'discounted_price': 69990, 'has_discount': True}, 'has_gift': False}, '40692': {'id': 40692, 'bonus': 8700, 'prices': {'base_price': 434990, 'discounted_price': 434990, 'has_discount': False}, 'has_gift': False}, '41868': {'id': 41868, 'bonus': 27989, 'prices': {'base_price': 279890, 'discounted_price': 279890, 'has_discount': False}, 'has_gift': True}, '44262': {'id': 44262, 'bonus': 11798, 'prices': {'base_price': 589890, 'discounted_price': 589890, 'has_discount': False}, 'has_gift': False}, '47800': {'id': 47800, 'bonus': 6800, 'prices': {'base_price': 339990, 'discounted_price': 339990, 'has_discount': False}, 'has_gift': False}, '48877': {'id': 48877, 'bonus': 33989, 'prices': {'base_price': 409890, 'discounted_price': 339890, 'has_discount': True}, 'has_gift': True}, '56926': {'id': 56926, 'bonus': 6800, 'prices': {'base_price': 339990, 'discounted_price': 339990, 'has_discount': False}, 'has_gift': False}, '56940': {'id': 56940, 'bonus': 88889, 'prices': {'base_price': 999890, 'discounted_price': 888888, 'has_discount': True}, 'has_gift': True}, '63175': {'id': 63175, 'bonus': 33989, 'prices': {'base_price': 409890, 'discounted_price': 339890, 'has_discount': True}, 'has_gift': True}, '67464': {'id': 67464, 'bonus': 8200, 'prices': {'base_price': 409990, 'discounted_price': 409990, 'has_discount': False}, 'has_gift': False}}}


