• 締切済み

HTTP::RequestでのWEBページの取得に失敗します。

Perlで以下のような処理を行おうとしています。  WEBページ1をダウンロードしてファイルに保存  (http://xxx.xx.xx/xxx?aaa=bbb)  ↓  保存したWEBページ1からFORMのパラメータを取り出して  (<input type="hidden" name="xxx" value="ooo">)  ↓  WEBページ2をダウンロードしてファイルに保存  (http://xxx.xx.xx/xxx?xxx=ooo) 実行して保存されたファイルを見ると、 WEBページ2がWEBページ1と同じものになってしまいます。 (WEBページ2とWEBページ1は同じサーバです。) 詳しくは以下の通りです。 原因が分かる方いましたら、アドバイスお願いします。 WEBページ1のvalue="ooo"の値が毎回変わるので とりあえず一度ファイルに保存 →そのファイルを開いて該当する値を探す としています。 仕事で閲覧するページなので、具体的なアドレスが書けません。 わかりにくくなってしまって申し訳ありません。 コードは補足に書きます。

みんなの回答

noname#9431
noname#9431
回答No.2

>WEBページ1のvalue="ooo"の値が毎回変わるので こういうしゃらくさいことをしているページであれば、リファラー、クッキー、ユーザーエージェントあたりもチェックしているのではないでそうか。

dennyz_Q
質問者

補足

そのサイトは商品検索のページなのですが、 (WEBページ1で検索結果の一覧を表示して WEBページ2でその商品の詳しい情報の一覧を 表示する、といったものです。) 実際のパラメータの部分は 10項目くらいあって、 そのうち2項目の値が変わるんです。 その2つは ...data_count=xxxxx&data_file=xxxxx... となっています。 ここからは推測ですが、 WEBページ1を要求したときに データベースからの検索結果を サーバー上にファイルに保存して、 WEBページ2を要求したときは その保存したファイルから読み込む、 と思ったのですが…。 (data_file=xxxxxとあるので。 ちなみにdata_count=xxxxxは検索結果の件数です。)

  • tochanx
  • ベストアンサー率37% (12/32)
回答No.1

では、とりあえずコードをお願いします。

dennyz_Q
質問者

補足

大変失礼しました。 補足で書こうと思ったのですが、 自分では書き込めないのですね…。 遅れましたが、コードは以下のようなものです use LWP::UserAgent; $id="xxx"; $pass="xxx"; #WEBページ1をダウンロードして"page1.html"の名前で保存する if(&download("http://xxx.xx.xx/xxx?aaa=bbb", "page1.html") == 0){      print "WEBページ1のダウンロードに失敗しました。<br>\n";      exit; } print "WEBページ1をダウンロードしました。<br>\n"; #WEBページ1から値を取り出す #ここは正しく処理されています。 #$valueにその値が入っています。 #WEBページ2をダウンロードして"page2.html"の名前で保存する if(&download("http://xxx.xx.xx/xxx?xxx=$value", "page2.html") == 0){      print "WEBページ2のダウンロードに失敗しました。<br>\n";      exit; } print "WEBページ2をダウンロードしました。<br>\n"; #     WEBページをダウンロードしてファイルに保存するサブルーチン # #     引数1 ダウンロードするアドレス(ファイル名) #     引数2 保存するファイル名 # #     保存できたら1,できなかったら0を返す # sub download{      $ua = LWP::UserAgent->new;      my $req = HTTP::Request->new(GET => "$_[0]");      $req->authorization_basic("$id", "$pass");      #↑認証が必要なので      $res = $ua->request($req, "$_[1]");      if ($res->is_success) { return 1; }      else { return 0; } }

関連するQ&A

専門家に質問してみよう