Я пытаюсь улучшить в Scrapy, и я сталкиваюсь с новой проблемой с Query String и Variables.
1) Кажется, что строке Query нужно два входа (storeInRadiusQuery & cache) : Вот заголовки запроса с URL-адресом API
2) Когда я собираюсь Params , у меня есть 2 строки запроса, которые сгруппированы в JSON формат. Внутри этого JSON есть 3 ключа (имя_операции, запрос и переменные).
В другом проекте scrapy запрос было намного проще отформатировать, но здесь я не знаю, как справиться с этим с помощью переменных.
Я пробовал метод Script Formdata безуспешно:
data = {
"operationName":"storeInRadiusQuery",
"variables":{"currentLocation":"50.4376478855132,2.82123986359978","service":[],"storeChain":[],"deliveryTypes":[],"date":[],"__typename":"storeLocatorFilters"},
"query":"query storeInRadiusQuery($currentLocation: String!, $service: [String], $storeChain: [String], $deliveryTypes: [String], $date: [String]) {\n viewer {\n storesInRadius(currentLocation: $currentLocation, services: $service, storeChaine: $storeChain, deliveryTypes: $deliveryTypes, date: $date, radius: 20, isStoreLocator: true) {\n source {\n ...StoresMapStoreItemType\n ...StoreLocatorList\n store_location\n sort\n __typename\n }\n __typename\n }\n __typename\n }\n}\n\nfragment StoreLocatorList on StoreItemType {\n store_id\n store_name\n street\n zip_code\n city\n seo_url\n day_0\n day_0_morning_open_time\n day_0_morning_close_time\n day_0_afternoon_open_time\n day_0_afternoon_close_time\n day_1\n day_1_morning_open_time\n day_1_morning_close_time\n day_1_afternoon_open_time\n day_1_afternoon_close_time\n day_2\n day_2_morning_open_time\n day_2_morning_close_time\n day_2_afternoon_open_time\n day_2_afternoon_close_time\n day_3\n day_3_morning_open_time\n day_3_morning_close_time\n day_3_afternoon_open_time\n day_3_afternoon_close_time\n day_4\n day_4_morning_open_time\n day_4_morning_close_time\n day_4_afternoon_open_time\n day_4_afternoon_close_time\n day_5\n day_5_morning_open_time\n day_5_morning_close_time\n day_5_afternoon_open_time\n day_5_afternoon_close_time\n day_6\n day_6_morning_open_time\n day_6_morning_close_time\n day_6_afternoon_open_time\n day_6_afternoon_close_time\n __typename\n}\n\nfragment StoresMapStoreItemType on StoreItemType {\n store_id\n store_name\n store_location\n zip_code\n street\n city\n seo_url\n __typename\n}\n"}
url = "https://www.monoprix.fr/api/graphql?storeInRadiusQuery&cache"
yield scrapy.FormRequest(url,
method='POST',
body=json.dumps(data),
headers={'Content-Type':'application/json'},
callback=self.parse)
Я видел этот пост о том, как обрабатывать строку запроса, но я не знаю как правильно поставить словарик строки запроса.
Здесь я хотел бы попытаться изменить текущее местоположение и параметры радиуса, чтобы найти список магазинов.
Если у вас есть идеи ... Спасибо!