Отправка формы с помощью запросов 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 ответов. Это означает, что двиг работает. Затем вы можете попробовать и сделать фактический пост.