• 締切済み

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"の値が毎回変わるので とりあえず一度ファイルに保存 →そのファイルを開いて該当する値を探す としています。 仕事で閲覧するページなので、具体的なアドレスが書けません。 わかりにくくなってしまって申し訳ありません。 コードは補足に書きます。

  • Perl
  • 回答数2
  • ありがとう数0

みんなの回答

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

  • ウェブページに埋め込んで見たいです

    ウェブページに埋め込んで見れます。とあるのですが・・    以下に <script type="text/javascript" src="http://xxxxxx.xx/xxx/embed/42822079-320"></script> ※xxxxは伏字       このようにあるわけですが ウェブページに埋め込んで見たいです。サッパリまるで方法がわからないので、 単刀直入に方法手順を教えてください。

  • radioボタンの値の取得の仕方?

    こんにちは,よろしくお願いします。 ラジオボタンの値でテキストフィールドのような要素をdisabledにしようと考えています。 そこで <input name="AAA" type="radio" id="AAA_0" value="0" checked="checked" onclick="xxx()"/>選択肢A <input name="AAA" type="radio" id="AAA_1" value="1" onclick="xxx()"/>選択肢B とし,javascriptのxxx functionの中では, if(document.getElementById("AAA").value == 0){ document.getElementById("BBB").disabled = true; }else if(document.getElementById("AAA").value == 1){ document.getElementById("BBB").disabled = false; } } としてみたところ,いつも document.getElementById("AAA").value の値が0のままでいくら選択肢Bをクリックしても切り替わりません。 一体何が悪いのでしょうか。教えてください。よろしくお願い申し上げます。

  • formなしでPOSTデータを送信・受信

    formを使わずに application/x-www-form-urlencoded 型のデータを送信させることってできるのでしょうか? あるサイトで、 <form method="post" action="/xxx"> <input type="hidden" value="1" name="aaa"/> <input type="text" value="2" name="bbb"/> <input type="checkbox" value="3" name="ccc" /> </form> のようなformがあったときに、 POSTで送信されているデータが、通常だと aaa=1&bbb=2&ccc=3 となるはずのところが、 aaa=1&bbb=2&ccc=3&ddd=4 となっていました。 また、この値(ここでは4としました)は送信ごとに変動していました。 (なお、ヘッダ情報はすべてFirefoxのLiveHTTPheadersで確認しました。) そのページ内には、hiddenや、その他のタグすべて(aやdiv)を含めて name(およびid)がdddのものはありませんでした。 (ソースを直接確認、およびFirefoxのFire bugおよびWeb Developerで確認しました。 さらに、これらで"ddd"をページ内検索してもヒットせず、見落としはないと思います。) また、Javascript(Javaも)をすべてOFFにし、 さらにクッキーも受けつけない・キャッシュも削除・無効化 した上で送信しても、 まったく同様に上記のdddのパラメータが送信されています。 (念のため確認したのですが、これに加えて、 Javascript適用後のHTMLであるFirebugで表示されるソースも じっくり見ましたが、ここでも見つからなかったので、 Javascriptによるhiddenタグ描画という可能性はないと思われます。) Javascriptやクッキーを使用せず、 かつHTMLのフォームタグも使わずに、 ユーザーにある(動的に変動する)パラメータをもつ POST情報を送信させる方法があるのでしょうか? 抽象的で申し訳ありませんが、 何か参考になりそうなことがありましたら どうぞよろしくお願いいたします。

    • ベストアンサー
    • HTML
  • URLに付く [ ] を外したい

    現在稼働中のWebシステムの保守を担当しています。 先日、お客様から「URLに付いている [ ] を消して欲しい」との依頼がありましたが、 やり方が分からず、困っております。 現在、 xxx/aaa[]/1,2,3/bbb[]/1,2,3/ このようになっているURLを xxx/aaa/1,2,3/bbb/1,2,3/ に変更したいという依頼です。 現在、以下のようなフォームがあり <form action="xxx.php" method="GET"> <input type="checkbox" name="aaa[]" value="1"> <input type="checkbox" name="aaa[]" value="2"> <input type="checkbox" name="aaa[]" value="3"> <input type="checkbox" name="bbb[]" value="1"> <input type="checkbox" name="bbb[]" value="2"> <input type="checkbox" name="bbb[]" value="3"> </form> このフォームを送信するとURLは以下のようになりますが、 xxx.php?aaa[]=1,2,3&bbb[]=1,2,3 これを .htaccess で xxx/aaa[]/1,2,3/bbb[]/1,2,3/ というように書き換えています。 このURLを、 xxx/aaa/1,2,3/bbb/1,2,3/ に変更することはできますでしょうか? html、.htaccess、php、どの部分が改修になっても構いません。 [ ] を削除したいという理由としては、 インターネットの広告を出すときに、広告登録フォームでURLがエラーになるから、ということでした。 広告登録フォームでURLがエラーにならなければ良いのかと思い、 xxx/aaa%5b%5d/1,2,3/bbb%5b%5d/1,2,3/ というように [ ] の部分をURLエンコードする方法をお伝えしましたが、%が付くのもダメということでした。 xxx/aaa_0/1/aaa_1/2/aaa_2/3/bbb_0/1/bbb_1/2/bbb_2/3/ というように カンマ区切りじゃなくなるのも嫌だそうです。 あくまで xxx/aaa/1,2,3/bbb/1,2,3/ の形が良いとのことでした。

  • ページのURLに関して

    SEOに詳しい方に質問があります。 当方で運用しているサイトのURLが xxx.jp/aaa/title/ なのですが、このサイト以下のコンテンツのURLが xxx.jp/bbb/title/contents/ のように、一つ上のディレクトリをトップページとは別のディレクトリにしているため、インデックス数をsite:~で計測したときにトップページしか計測されません。やはりサイト以下のコンテンツのURLも xxx.jp/bbb/title/contents/ ではなく、トップページと同じように xxx.jp/aaa/title/contents/ にしなくてはSEOでは不利なのでしょうか。

    • 締切済み
    • SEO
  • You don't have permission

    自宅サーバ Fedora 11です。 IEにhttp://XXX.XXX.X.XX/~master/aaa/bbb/ccc/ と打ち込んだら Forbidden You don't have permission to access /~master/aaa/bbb/ccc/ on this server. このようなエラーメッセージででました。 cccフォルダ中身が見えるようにしたいですが、どうしたらいいですか? cccフォルダのファイルは大丈夫です。例え http://XXX.XXX.X.XX/~master/aaa/bbb/ccc/dog1.gif しても問題ないです。ただ、 http://XXX.XXX.X.XX/~master/aaa/bbb/ccc/ だと、、、上記のようなエラーがでるし、中身を確認できません。 cccフォルダの中を確認できるようにするにはどうしたらいいですか? よろしくお願いします。 http://XXX.XXX.X.XX/~master/aaa/bbb/ccc/

  • formヘルパーを使わないと、パラメータを取得できないのでしょうか?

    symfonyを使用してますが、 formヘルパーを使わないと、リクエストのパラメータを取得できないのでしょうか? --------------------------------------------------- <form action="/web/xx.php/xx/xxx" enctype="text/plain" method="post"> <input type="text" name="model" value="50"> <input type="submit" value="検索"> </form> --------------------------------------------------- 上記だと、パラメータを取得できるが、下記だと取得できる。 --------------------------------------------------- <?php echo form_tag('/web/xx.php/xx/xxx') ?> <?php echo input_tag("model","50") ?> <?php echo submit_tag('検索')?>

    • 締切済み
    • PHP
  • 非常に多くのパラメータをデータクラスに登録する「楽な」方法は?

    非常に多くのパラメータをデータクラスに登録する「楽な」方法は? ファイルから大量のパラメータを読み込んで、それをデータクラスに登録する方法についての質問です。例えば、 AAA,10 BBB,20 ... というように、500個くらいのパラメータと初期値がCSVファイルに書かれているとします。そして、このパラメータを全部、以下の例のようなデータクラスに登録します。 (メンバ変数は、説明しやすいようにpublicにしてあります) class Data { public:   int AAA;   int BBB;   ... }; こういう状態で、ファイル読み込み時に Data.AAA = 10; Data.BBB = 20; ... ということをしたいのですが、500回分こういうことを書くしかないのでしょうか?AAAとかBBBとかを明示的に書かなくても、ファイルを1行ずつ読み込んでパラメータ名と初期値を取得した時に、以下のようにできないものでしょうか? // ファイルから1行ずつ読み込み while( !EOF ){   // パラメータをparamとして取得   // 初期値をvalueとして取得   // こんなことがしたい   Data.param= value; }

  • WEBページへのリクエストを自動化

    以下のような処理をローカルPC上で自動起動して行いたいと思っているのですが、良いアイデアありませんでしょうか? (1)あるWEBページにアクセスする(スポーツ施設の予約サイトと仮定) (2)アクセスしたWEBページに表示された入力条件(例:日にち、場所、種目など)を入力して、「検索」ボタン押下 ※入力条件はあらかじめパラメータで設定しておく (3)検索結果の画面にもし「空き」があれば、その日付と場所を自分にメールし、空きが存在しなければ何もしない ※メールアドレスはあらかじめパラメータで設定しておく (4)上記の処理を、ある時間で時限起動する(例えば9時、12時、15時・・・) パソコンに関する知識は乏しいのですが、バッチファイル?に(1)~(3)の処理を記述して、それをうまいこと時限起動できたりしないものか・・・と思ったのですが、限界を感じたので質問させて頂きました。 (1)~(4)全ての方法はわからないけど、(1)ならわかる、などでも良いので、ご意見頂ければと思います。

  • Webサーバからファイルをダウンロード

    Webサーバの既知のディレクトリ(http://aaa.co.jp/bbb/)に 保管されているPDFファイル(ccc.pdf)をクラインアントから 次のようにダウンロードさせるサイトが作りたいです。 (1)クライアントが、Webサイトのテキストボックスにファイル名(ccc.pdf)を   入力して、保存ボタンを押す。 (2)クライアントに、「名前を付けて保存」ダイアログを表示させる。   (デフォルトでファイル名は ccc.pdf となっている。) (3)クライアントが「保存する場所」を指定して、「保存」ボタンを押すと、   http://aaa.co.jp/bbb/ccc.pdf がダウンロードされ、指定の場所に   ファイルが保存される。 この(2)、(3)の処理をさせるのに、JavaScriptでどのように書けば 良いのでしょうか? (location.href でファイルをブラウザで表示させることはできますが、  表示させることなく、保存だけしたいです。) 素人のため、言葉の使い方がおかしいかもしれませんが、 宜しくお願い致します。