私は Scala で Web サイトのスクレイピング アプリケーションに取り組んでいます。私がスクレイピングしているサイトは非常にセッション指向であるため、他の操作を行う前に、セッション ID を取得するために一度サイトにアクセスする必要があります。
次のようにセッション ID を取得するための接続を取得します。
url.openConnection().asInstanceOf[HttpURLConnection]
それは正常に動作します。返された HttpURLConnection の .connected フィールドは false であり、.connect() を呼び出すと true に反転します。問題ない。
問題の最初のヒントは、接続を終了して .disconnect() を呼び出したときに発生します。.connected フィールドは true のままです。うーん。
これで、セッション ID を取得できたので、必要なフォームを含むページを取得します。電話する
url.openConnection().asInstanceOf[HttpURLConnection]
繰り返しますが、前回と同じように (実際には同じコードです)、今回は HttpURLConnection の .connected フィールドが true に設定されています。最初は、以前に渡されたのと同じオブジェクトが渡されたのではないかと思いましたが、いいえ、メモリ ID が異なります。
もちろん、接続で .setRequestProperty() を呼び出すと、 IllegalStateException: Already connected で爆発します。
HttpURLConnection の使い方を誤解していますか?
注: Scala 2.9.2、Java 6.0。また、.openConnection() を呼び出す URL オブジェクトは異なるオブジェクトであり、同じではありません。
ありがとう...