▽1
●
lang_and_engine ●75ポイント ベストアンサー |
Webスクレイピングは,HTTPパラメータをベースにしたサイトとの通信やり取りで実装すると,うまくいかなくなる事が多いです。
理由は,そういう自動処理ができないようにサイト側も対策をするからです。
例えば,hiddenでパラメータを埋め込んで,それが送信されていないと不正なアクセスとみなし,このサービスはご利用できません,とだけそっけなく通知する。
あるいは,HTTPヘッダのユーザエージェントなどなどをよく検査して,ボットではなく本物のブラウザがアクセスしていることを検査する,など。
そこで解決策ですが,IEを自動操作するプログラムを組んで対処するのがベストです。
Webアプリの操作はつまるところDOM操作の繰り返しなので,ネットワークプログラミングではすぐに壁に行きあたり,DOMを操作するためにブラウザそのものを立ち上げて自動操作する路線に切り替えることになります。
そのための言語としては,VBA,WSH,UWSCなどがよく使われますね。IE 自動操作 などでググってみてください。
(これ以上の具体的な回答はできません。自動操作を禁じているサイトもたくさんあるので,その幇助にあたる回答はできないのです。)
一般的な話ですが referer をチェックしているサイトがあります。
サイトの実装によるので確実ではありませんが 400 Bad Request や 403 Forbidden を返すことが多いように思います。
HttpResponse#getStatusLine() 返ってきているステータスコードを確認してみてください。
もしかするとステータスコードの後の文字列にリクエストを拒否した理由が書いてある可能性もあります。
対処方法としては referer を設定することです。
HttpPost#addHeader() で適切な referer を設定してください。
実際のページ遷移と同じにするのが良いと思いますが、Host までしかチェックしていないサービスも経験したことがあります。
こういったものは使えないですか?
http://techbooster.jpn.org/andriod/application/1801/
http://blog.inouetakuya.info/entry/20090402/1238680440
こちらが参考になると思います。
自己解決しました。
結論から言うと各画面遷移の間に適当な待機時間を設けてやることで処理が通るようになりました。
画面遷移があまりに早いとエラーを出すような仕組みになっているようです。
ベストアンサーは直接的な解決策ではありませんがuwscが色々と面白い用途がありそうな
ソフトであったので選ばせて頂きました。