Форум сайта python.su
Помогите пожалуйста разрбраться, как с помощью requests запросить данные о текущем статусе доставки.
Смотрел какие запросы посылает сайт, но не могу сообразить как он генерирует запрос (запрос генерится с помощью js).
На сколько я понял, функция отвечающая за отправку формы находится в файле https://www.cdek.ru/website/edostavka/template/js/custom.min.js?v63 и называется _getDataByInvoice.
Сайт https://www.cdek.ru/track.html?order_id=1048761933, номер заказа для примера 1048761933
Пробовал вот так, но возвращается пустота, что-то не так делаю..
import requests headers = { 'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'ru,en;q=0.8', 'Connection': 'keep-alive', 'Content-Length': '41', 'Content-Type': 'application/octet-stream', 'DNT': '1', 'Host': 'www.cdek.ru', 'Origin': 'https://www.cdek.ru', 'Referer': 'https://www.cdek.ru/track.html?order_id=1048761933', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 YaBrowser/17.6.0.1628 Yowser/2.5 Safari/537.36', 'X-Compress': 'null' } data = { 'Action': 'GetTrackingInfo', 'invoice': '1048761933', 'phone': 'null' } resp = requests.post('https://www.cdek.ru/ajax.php', data, headers=headers) print(resp.text) print(resp.status_code)
Отредактировано ivan342 (Июль 14, 2017 13:08:29)
Офлайн
import requests import json s = requests.Session() data_json = {'Action': 'GetTrackingInfo', 'invoice': '1048761933'} r = s.post('https://www.cdek.ru/ajax.php?JsHttpRequest=15000505001993-xml', data=data_json) >>> json.loads(r.text) {'id': '15000505001993', 'js': {'Content': {'canBeChanged': False, 'tariffDateEnd': '17.07.2017', 'trackingDetails': [{'cityCode': '32696', 'statusName': 'В транзитном городе', 'cityName': 'Воронеж (На Ленинградской)', 'date': '13.07.2017'}, {'cityCode': '32696', 'statusName': 'Отправлен в транзитный город', 'cityName': 'Воронеж (На Ленинградской)', 'date': '13.07.2017'}, {'cityCode': '506', 'statusName': 'Принят в городе отправителя', 'cityName': 'Воронеж', 'date': '13.07.2017'}, {'cityCode': '506', 'statusName': 'Отправлен в город получателя', 'cityName': 'Воронеж', 'date': '14.07.2017'}, {'cityCode': '506', 'statusName': 'Принят в городе отправителя', 'cityName': 'Воронеж', 'date': '14.07.2017'}, {'cityCode': '506', 'statusName': 'Отправлен в город получателя', 'cityName': 'Воронеж', 'date': '14.07.2017'}, {'cityCode': '44', 'statusName': 'Принят в городе получателя', 'cityName': 'Москва', 'date': '14.07.2017'}, {'cityCode': '44', 'statusName': 'На доставке у курьера', 'cityName': 'Москва', 'date': '14.07.2017'}, {'cityCode': '44', 'statusName': 'Вручен: ООО «Мотокаталог»', 'cityName': 'Москва', 'date': '14.07.2017'}], 'orderDate': '13.07.2017', 'currentDateTimeCityTo': '15.07.2017 18:16:12', 'receiverAddress': 'Огородный проезд, д.2А, -', 'status': {'name': 'Вручен', 'code': 'status_general_success'}, 'cityTo': {'id': '44', 'name': 'Москва'}, 'orderNumber': '1048761933', 'cityFrom': {'id': '506', 'name': 'Воронеж'}, 'storageDateEnd': '28.07.2017'}, 'SpeedID': '16349946'}, 'text': ''} >>>
Офлайн