@Bruh_h_h_h

Как решить эту проблему в написании парсера?

Хочу впервые написать что-то большее, чем перебор чисел от 1 до 100)
Хотел спарсить vinted, чтобы выдавал список всех товаров на странице, но даже на первых этапах выступают проблемы, помогите решить)
from fake_useragent import UserAgent
import requests
import json

ua = UserAgent()


def collect_data():
    response = requests.get(
        url='https://www.vinted.it/api/v2/catalog/items?catalog_ids=1193&color_ids=&brand_ids=&size_ids=&material_ids=&status_ids=&is_for_swap=0&page=1&per_page=24&time=1644673298&search_session_id=&',
        headers={'user-agent': f'{ua.random}'}
    )
    with open('result.json', 'w') as file:
        json.dump(response.json(), file, indent=4, ensure_ascii=False)


def main():
    collect_data()


if __name__ == '__main__':
    main()
print(ua.random)

Вот что выдаёт файл json, куда я осуществляю вывод
"code": 100,
    "message": "Token d'authentification invalide",
    "message_code": "invalid_authentication_token"
  • Вопрос задан
  • 798 просмотров
Пригласить эксперта
Ответы на вопрос 3
dimonchik2013
@dimonchik2013
non progredi est regredi
Комментировать
hottabxp
@hottabxp Куратор тега Python
Сначала мы жили бедно, а потом нас обокрали..
1) Нужно сохранить cookies с именем _vinted_fr_session (либо с главной страницы, либо с любой другой)
2) В каждом запросе нужно передавать cookie с именем _vinted_fr_session
import requests

response = requests.get('https://www.vinted.co.uk/') # Загружаем главную страницу для получения cookies


x = response.cookies.get('_vinted_fr_session') # Сохраняем в переменную x cookie с именем _vinted_fr_session

params = (					# Параметры 
    ('catalog_ids', '1193'),
    ('color_ids', ''),
    ('brand_ids', ''),
    ('size_ids', ''),
    ('material_ids', ''),
    ('status_ids', ''),
    ('is_for_swap', '0'),
    ('page', '1'),
    ('per_page', '24'),
    ('time', '1644673298'),
)

response = requests.get('https://www.vinted.it/api/v2/catalog/items',params=params, cookies={'_vinted_fr_session':x}) # Передаем параметры и cookie с именем _vinted_fr_session


print(response.text)

На выходе получаем json:
JSON
{"items":[{"id":1627816766,"title":"Biliardino per bambini ","price":"20.0","discount":null,"currency":"EUR","brand_title":"Bambini","size_title":"","is_for_swap":false,"user":{"id":69909841,"login":"capitanleox","profile_url":"https://www.vinted.it/member/69909841-capitanleox"...

Бла бла бла...


ЗЫ: Можно прикрутить requests.Session()
Ответ написан
AlexNest
@AlexNest Куратор тега Python
Работаю с Python/Django
Ну, очевидно, сайт требует определенный токен для авторизации.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы