#はじめに
みなさんは何を使ってAtCoderに提出していますか?AtCoderのサイト上で、という人が大多数だと思いますがatcoder-cliやonline-judge-toolsを使ってる人もいらっしゃると思います。わたしはここのサイト(とその関連記事)を参考に自分で自動提出できるようにしたいなぁ~と思っていましたが、うまくいかなかったので、この記事を書きました。
###できなかったこと
まず、先ほどのサイトの通り、実装してみても、うまく提出できません。なぜでしょうか。ぼくはこれの原因究明に3日ぐらいかけました。アホですね!!しかし、この記事をご覧になさっている方なら私の二の舞を演じることはないと思います!!
※この記事を読む前に先にはじめに紹介したサイトを御一読なさることをお勧めします。この記事はそのサイトの内容を理解したことを前提にして話を進めさせていただきます。また私の実行環境はWindows10,Python3.8.1,Requests,BeautifulSoup4インストール済みです。Pythonをインストール済みの方でRequests,BeautifulSoup4をインストール済みでない方はインストールをお勧めいたします。
#原因究明
まずは私は、ログインできていないことを疑いました。そこでWebブラウザでログインできない環境を再現しようとしました。
たとえば、AtCoderログインでわざとアカウント名やパスワードを間違えてみてください。そうすると、結局はログインできませんでしたという通知が出て同じサイトに居続けますね?なので、まずはリダイレクト先を疑いました。
また、いろいろといじっていたら面白いことに気づいてしまったので私のもう一つの記事を紹介しておきます。
先ほどのサイトのpost処理の後に
print(result.url)
こう書いて.urlを用いてリダイレクト先を探してみてください。そうすると私は
https://atcoder.jp:443/home
こう表示されました。なのでログインするurlをこれに変えたらログインもできたし、正常に提出もできました。皆さんも試してください。心配性の方はlogin_urlを変えずにと私の記事のログインできているか確かめている方法を利用してtry~except文で書いたらいいと思います。
#おわり
読んでいただきありがとうございました。かなりわかりにくい記事になってしまいましたが参考になれば幸いです。なにかご指摘ありましたら、コメントしていただければ嬉しいです。ありがとうございました。