Задать вопрос
  • Как правильно сформировать запрос Python requests?

    @66demon666
    Сетевой админ, АТС-админ
    Исходя из тела ответа сайт просит вам капчу ввести, нужно обработать этот момент
    Ответ написан
    Комментировать
  • Как правильно сформировать запрос Python requests?

    @eminsk
    developer python, javascripts
    Лучше использовать современную библиотеку httpx а не requests

    Если хочешь все таки чтобы через requests -
    использовать мобильный прокси и на каждый запрос менять ip и тогда все также будет проходить через requests стабильно все и не требовать проверку капчи

    import httpx
    
    url = 'https://www.wildberries.ru/webapi/product/339182812/data?subject=104&kind=1&brand=311487279&lang=ru'
    headers = {
        'accept': '*/*',
        'accept-language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
        'deviceid': 'site_2a047e880327425b89fe726a55e5f479',
        'dnt': '1',
        'priority': 'u=1, i',
        'referer': 'https://www.wildberries.ru/catalog/339182812/detail.aspx',
        'sec-ch-ua': '"Not;A=Brand";v="99", "Google Chrome";v="139", "Chromium";v="139"',
        'sec-ch-ua-mobile': '?0',
        'sec-ch-ua-platform': '"Linux"',
        'sec-fetch-dest': 'empty',
        'sec-fetch-mode': 'cors',
        'sec-fetch-site': 'same-origin',
        'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36',
        'x-requested-with': 'XMLHttpRequest',
        'x-spa-version': '13.3.3',
    }
    
    try:
        with httpx.Client(
            http2=True,  # включит HTTP/2, если сервер поддерживает
            headers=headers,  # без копирования на каждый запрос
            timeout=httpx.Timeout(connect=3.0, read=5.0, write=5.0, pool=5.0),
        ) as client:
            resp = client.get(url)
            resp.raise_for_status()
            print(resp.request.headers)  # аналог print(req.headers)
            print(resp.json())  # прямой парсинг JSON без лишних копий
    except httpx.HTTPError as e:
        print(f"Возникла ошибка: {e}")


    Результат
    C:\proekts\wildberries_parser>parser4.py  
    
                                                                                                                                                                          Headers({'host': 'www.wildberries.ru', 'accept-encoding': 'gzip, deflate', 'connection': 'keep-alive', 'accept': '*/*', 'accept-language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7', 'deviceid': 'site_2a047e880327425b89fe726a55e5f479', 'dnt': '1', 'priority': 'u=1, i', 'referer': 'https://www.wildberries.ru/catalog/339182812/detail.aspx', 'sec-ch-ua': '"Not;A=Brand";v="99", "Google Chrome";v="139", "Chromium";v="139"', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '"Linux"', 'sec-fetch-dest': 'empty', 'sec-fetch-mode': 'cors', 'sec-fetch-site': 'same-origin', 'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36', 'x-requested-with': 'XMLHttpRequest', 'x-spa-version': '13.3.3'})                                                                                                 {'resultState': 0, 'value': {'data': {'brandAndSubjectUrl': '/brands/311487279-onv/kedy', 'targetInfo': {'targetUrl': 'EX', 'targetCode': 0, 'sort': 0, 'targetUrlExtended': 'EX|||||||||'}, 'sitePath': [{'id': 629, 'name': 'Обувь', 'sort': 20, 'pageUrl': '/catalog/obuv', 'topMenuRenderer': 0, 'leftMenuRenderer': 0, 'landingPage': False, 'hash': 1115844598, 'xshardKey': 'blackhole', 'xquery': 'cat=629', 'noFollow': True, 'excludeFromBreadcrumbs': False, 'isTop': False, 'isDenyLink': True, 'rawQuery': 'subject=2;739'}, {'id': 751, 'parentId': 629, 'name': 'Мужская', 'sort': 20, 'pageUrl': '/catalog/obuv/muzhskaya', 'topMenuRenderer': 0, 'leftMenuRenderer': 0, 'landingPage': False, 'hash': -5142543, 'xshardKey': 'men_shoes', 'xquery': 'cat=751', 'noFollow': False, 'excludeFromBreadcrumbs': False, 'isTop': False, 'rawQuery': 'kind=1&subject=2', 'snippet': 'sizes'}, {'id': 8194, 'parentId': 751, 'name': 'Кеды и кроссовки', 'sort': 10, 'pageUrl': '/catalog/obuv/muzhskaya/kedy-i-krossovki', 'topMenuRenderer': 0, 'leftMenuRenderer': 0, 'landingPage': False, 'hash': 363037686, 'xshardKey': 'men_shoes', 'xquery': 'cat=8194', 'noFollow': False, 'excludeFromBreadcrumbs': False, 'isTop': False, 'rawQuery': 'kind=1&subject=104;105;128;130;396;1382;1586', 'snippet': 'sizes', 'searchQuery': 'menu_redirect_subject_v2_8194 мужские кеды и кроссовки'}, {'id': 0, 'name': 'O_N_V', 'sort': 0, 'pageUrl': '/brands/311487279-onv', 'topMenuRenderer': 0, 'leftMenuRenderer': 0, 'landingPage': False, 'hash': -1593255687, 'noFollow': False, 'excludeFromBreadcrumbs': False, 'isTop': False}]}}}
    Ответ написан
    9 комментариев
  • Добрый день. Вопрос по Python связанный с вводом данных. Вводить число надо так чтобы программа принимала числа со знаками после запятой?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Давайте посмотрим на код вашей программы.
    a, b, c, d = map(int, input().split())

    Как вы думаете, что делает функция, выделенная жирным шрифтом?
    Ответ написан
    Комментировать