6

そのため、フォームの入力と送信を自動化したいのですが、それRequestsを行うために使用しています。

要素を調べると、送信先の URL と送信の種類 (投稿) がわかりました。

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

私の問題は、私のリクエストがうまくいかず、これにかなり慣れていないことです。その理由はわかりません。

私のWebページには、次のように2つのボタンが並んでいます。

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

そして、その行の要素を調べると、次のようになります。

<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'}

ただし、機能していないようで、エラーは発生していません。

どんな助けでも感謝します。前もって感謝します

4

1 に答える 1

6

わかりました、ペイロードが間違っています。しかし。受け取ったエラーメッセージが含まれていなかったため、変更が実際に役立つかどうかはわかりません.

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

HTML フォームと POST リクエストについて理解しておく必要があるのは、フォームの送信ボタンをクリックすると、value属性を持つフィールドの属性が送信されるということnameです。たとえば、タイプの入力フィールドはsubmit送信されません。ありませんnameinLeaderinMemberフィールドにデータがないのではないかと疑っています。これはどういうわけかJavascriptを介して設定されていますか?

フォームにアクセスするにはログインする必要があるとコメントで言及しましたか? これはおそらく、リクエストとともに正しい Cookie も送信する必要があることを意味します。そのため、URL にアクセスすると、ユーザー名とパスワードを求められます。このウェブサイトは基本認証を使用しています。

requestsこれをサポートします。以下の例:

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

get リクエストを作成して、少なくとも 200 のレスポンスを取得できるかどうかを確認してみてください。これは、認証が機能していることを意味します。次に、実際の投稿を試すことができます。

于 2013-10-19T11:10:08.460 に答える