@YWRE

Парсинг сайта магнит?

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

путем несложных(весь мозг сломал) манипуляций выяснил что сайт запрашивает каталог товаров post запросом и возвращает словарь с продуктами(код, название, цена и тд)

как я только не изгалялся, но при запросе этого словаря выдает код 400, помогите понять что я делаю не так

import requests
from bs4 import BeautifulSoup
from fake_useragent import UserAgent


session = requests.Session()
agent = UserAgent().random
headers = {
                    "x-platform-version": "window.navigator.userAgent",
                    "accept":"*/*",
                    "user-agent": agent,
                    "x-device-tag": "disabled",
                    "x-device-id": "nk1kmh32na",
                    "x-app-version": "0.1.0",
                    "x-device-platform": "Web",
                    "x-client-name": "magnit"
                }


data = {
  "categoryIDs": [
    4893,
    4887,
    4894,
    4886,
    4885,
    4889,
    4890,
    4891,
    4892
  ],
  "includeForAdults": "true",
  "onlyDiscount": "false",
  "order": "desc",
  "pagination": {
    "number": "1",
    "size": "36"
  },
  "shopType": "1",
  "sortBy": "price",
  "storeCodes": [
    "543358"
  ]
}

test = session.post(url="https://web-gateway.middle-api.magnit.ru/v3/goods",json=data, headers=headers)
print(test)
  • Вопрос задан
  • 491 просмотр
Решения вопроса 1
@YWRE Автор вопроса
Всем спасибо кто ответил, в итоге разобрался
import json
import requests
import time

def Get_Products(page):
    session = requests.Session()
   
    headers = {
        "accept": "*/*",
        "accept-language": "ru,en;q=0.9",
        "content-type": "application/json",
        "sec-ch-ua": "\"Not.A/Brand\";v=\"8\", \"Chromium\";v=\"114\", \"YaBrowser\";v=\"23\"",
        "sec-ch-ua-mobile": "?0",
        "sec-ch-ua-platform": "\"Windows\"",
        "sec-fetch-dest": "empty",
        "sec-fetch-mode": "cors",
        "sec-fetch-site": "same-site",
        "x-app-version": "0.1.0",
        "x-client-name": "magnit",
        "x-device-id": "nk1kmh32na",
        "x-device-platform": "Web",
        "x-device-tag": "disabled",
        "x-platform-version": "window.navigator.userAgent"
    }

    data = "{\"categoryIDs\":[4893,4887,4894,4886,4885,4889,4890,4891,4892],\"includeForAdults\":true,\"onlyDiscount\":false,\"order\":\"desc\",\"pagination\":{\"number\":"+str(page)+",\"size\":36},\"shopType\":\"1\",\"sortBy\":\"price\",\"storeCodes\":[\"543358\"]}"

    response = session.post(url="https://web-gateway.middle-api.magnit.ru/v3/goods", data=data, headers=headers)

    products = json.loads(response.text)

    return products["goods"]
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы