Запросы Python программно получают данные формы Dev Tools, предварительно отформатированные как словарь - PullRequest
0 голосов
/ 07 сентября 2018

Я пытаюсь обновить уже сохраненную форму в системе, используя HTTP-запросы. Из-за конфигурации сервера для стороннего приложения, которое мы используем, для обновления по протоколу POST требуется отправка полностью заполненной полезной нагрузки каждый раз.

Я хочу обойти это, восстановив данные формы, уже имеющиеся на сервере, и преобразовав их в словарь. Затем измените все значения, которые мне нужны, и сделайте репост, чтобы внести изменения с другой стороны.

Приложение, которое мы используем, отправляет запрос POST, когда нажимается кнопка сохранения для определенной формы.

Здесь я отправляю почтовый запрос без полезной нагрузки. [Это имитирует нажатие кнопки сохранения, а также является точкой, где инструменты разработчика показывают мне полезную нагрузку, которую я хочу захватить]

post_test = self.session.post(url_to_retrieve_from)

Я подумал, что теперь я смогу распечатать вывод, который должен напоминать то, что собирает данные из инструментов Google Dev.

print(post_test.text)

Это просто дает мне HTML, найденный на веб-странице.

Если Dev Tools сможет получить это с сервера, тогда я тоже смогу?

Пример данных, которые я пытаюсь получить с помощью запросов: Данные формы

1 Ответ

0 голосов
/ 07 сентября 2018

Если Dev Tools сможет получить это с сервера, тогда я тоже смогу?

Да, конечно. В запросах вы передаете данные формы в data ключевом слове:

import requests

url = 'http://www.example.com'

data = {
    'name': 'value',
}

response = requests.post(url, data=data)

Вы можете получить данные, отправленные с запросом из ответа, следующим образом:

import requests

response = requests.post('http://your_url', data=data) # send request

body = response.request.body

parsed_data = dict(data.split('=') for data in body.split('&')) # parse request body

Здесь вы можете найти больше информации о data аргумент

В документации , в классе запросы. Ответ мы можем найти атрибут:

запрос = нет

Объект PreparedRequest, на который это ответ.

В запросов. Подготовленный запрос класс, который мы можем прочитать:

тело = нет

тело запроса для отправки на сервер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...