Отправка формы с помощью запросов Python

поэтому я хочу автоматизировать заполнение и отправку формы, и я использую Requests для этого.

из проверки элементов я знаю url-адрес для отправки и тип подачи (post):

method="post"
action="/sformsubmit"
enctype="multipart/form-data"

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

на моей веб-странице у меня есть две кнопки рядом так:

   ___________________________          ________________________________
   |    Submit decleration   |          |        Reset Form            |
   ___________________________          ________________________________

и когда я проверяю элементы на этой строке i получить:

<td align="center" colspan="2">
    <input type="hidden" name="inLeader" value>
    <input type="hidden" name="inMember" value>
    <input type="hidden" name="version" value="0">
    <input type="hidden" name="key" value="2013:a:c:3:2s">
    <input type="submit" value="Submit declaration">
    <input type="reset" value="Reset form">
</td>

Я пробую следующее:

>>> payload = {'inLeader':'', 'inMember':'', 'version':'0', 'key':'2013:a:c:3:2s'}

однако он, похоже, не работает и не генерирует никаких ошибок.

любая помощь будет признателен. Заранее спасибо

1 ответов


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

payload = {
    'inLeader':'',
    'inMember':'',
    'version':'0',
    'key':'2013:a:c:3:2s',
}

что вам нужно понять о HTML-формах и запросах POST, так это то, что при нажатии кнопки "Отправить" на форме он отправляет value атрибут любого поля с . Поле ввода с типом submit не отправляется, например. У него нет name. Я подозреваю, что inLeader и inMember поля нет данных. Это как-то устанавливается через Javascript?

вы упоминаете в комментарии, что вам нужно войти в систему, чтобы получить доступ к форме? Это скорее всего означает, что вам также нужно отправить правильные куки вместе с запросом. Итак, посетив URL, я получаю запрос на имя пользователя / пароль. Этот сайт использует basic авторизации.

requests поддерживает это. Пример ниже:

import requests
from requests.auth import HTTPBasicAuth
requests.get(url, auth=HTTPBasicAuth('your username', 'your password'))

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