PerlのLWP HTTPをPHPで移行するためのクラスライブラリとは?

このQ&Aのポイント
  • PerlでのスクリプトをPHPに移行する際、LWPとHTTPに代わるクラスライブラリ(API)はありますか?
  • 具体的には、LWP::UserAgentとHTTP::Requestが使用されていますが、PHPでの代替はどのクラスライブラリになるのでしょうか?
  • PHPのドキュメントを確認しましたが、具体的な情報が得られませんでした。参考URLがあれば教えてください。
回答を見る
  • ベストアンサー

Perlで言う、LWP HTTPをPHPで

PerlでのスクリプトをPHPに移行しようかと考えております。(勉強のため) それで、PerlのモジュールでいうLWPとHTTPに代わるクラスライブラリ(API)は、どれにあたるのでしょうか? 具体的には、LWP::UserAgentとHTTP::Requestです。 ※詳しくは、 my $wa = new LWP::UserAgent; my $req = new HTTP::Request(GET => $url); my $res = $wa->request($req); PHPのドキュメント(http://www.php.net/manual/ja/)を見たのですが、いまいちピンときませんでした。 参考URLで結構ですので、よろしくお願いいたします。

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

CURLかな?

参考URL:
http://jp2.php.net/manual/ja/ref.curl.php
magicjourny
質問者

お礼

ありがとうございます。 探し方が甘かったみたいです。 ドキュメントを読む限りだと確かに求めていたもののようです。 まだ、試してみませんが、ありがとうございました。

関連するQ&A

  • Perl LWPでproxyがうまく刺さらない

    Perl初心者です。 LWPでどうしてもproxyが通りません・・・。 何が悪いのかわかりません。教えてください。 モジュールは全て導入を確認しました。 よろしくお願いします。 稚拙なミスだったらごめんなさい。 use LWP::Simple; use LWP::UserAgent; use HTTP::Request::Common; my $ua = LWP::UserAgent->new( timeout=>"5" ); #cybersyndromeさんからLWP::Simpleでproxyを取得 $_ = get('http://www.cybersyndrome.net/pla5.html'); #proxyをリストに代入 (@proxy_list)=/\"\>(.*?)\<\/a\>\<\/li\>\<li\>/g; #適当なサイトをリクエストのターゲットに $r = new HTTP::Request GET,('http://taruo.net/e/'); #前述のターゲットへリクエストしてひとつづつproxyが通るか確かめたいのに何故かすべてすぐにERRORに for($i = 0;$i <= 10;$i++){ $proxy = 'http://'.$proxy_list[$i]; $ua->proxy ([qw(http https)] , $proxy); $req = $ua->request($r); if ($req->is_success) { print "Success!\n"; }else{ print "Error\n"; } }

    • ベストアンサー
    • Perl
  • LWPで応答データを取得できない

    お世話になります。 perl5でLWPを使用しているのですが、一部のサイトでデータを取得できず困っております。 具体的には my $ua = LWP::UserAgent->new; $ua->agent('Mozilla/5.0'); my $req = HTTP::Request->new(GET => "http://misshiki.blog7.fc2.com/?xml"); my $res = $ua->request($req); my $buf = $res->content; といった感じでRSSを取得したいのですが、$bufが空になってしまいます。 しかし、 $res->as_string とすると、レスポンスヘッダも含めてRSSが取得できていることが確認できます。 また、上記以外のURLでは正常に$res->contentでデータを取得することができています。 どうもFC2ブログのRSSのみの事象のようではあるのですが、対処方法がわからず困っております。 対策をご教授いただければ幸いです。 以上、よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • LWPでヘッダー情報をあらかじめ取得したい

    例えば、下記のようなスクリプトの場合、一度画像が保存された後、ファイルサイズをを抜き出すようになります。 ダウンロード前に、ファイルサイズをあらかじめ知りたいのですがどのようにしたら良いでしょうか? use strict; my $url = "http://img.www.goo.ne.jp/img/gh_logo.png"; use LWP::UserAgent; use HTTP::Cookies; use HTTP::Request; use HTTP::Headers; my $req = HTTP::Request->new(GET => $url); my $ua = LWP::UserAgent->new; $ua->agent( 'Mozilla/5.0 (Windows NT 6.0; rv:12.0)' ); $ua->timeout('10'); $ua->max_redirect(); $ua->cookie_jar( HTTP::Cookies->new( file => '', autosave => 1, )); my $res = $ua->request($req, "save.png"); my $file_size = $res->header("content-length"); print $file_size;

    • ベストアンサー
    • Perl
  • web文書を取得するプログラムのサイト内での不具合について

    perl初心者です。 自分のwebサイトのコードを取得するプログラムをつくろう と思っているのですが、下のコード -------------------------------------------------------- #!/usr/local/bin/perl use LWP::UserAgent; use HTTP::Request; use HTTP::Response; our $URL = 'http://www.google.co.jp/'; # アクセスする URL my $proxy = new LWP::UserAgent; my $req = HTTP::Request->new('POST' => $URL); # HTTP リクエストを作成 my $res = $proxy->request($req); # $res に HTTP レスポンスが返ってくる print $res->content; # HTML を表示 1; --------------------------------------------------------------- でターゲットのurlが上のgoogleだと取得できるんですが 自サイトのurl'http://○○.××.△△.com/'だと 500 Internal Server Errorとなってしまいます。 因みにレンタルサーバーを利用しています。 サーバーでは技術的な質問は受け付けてないとの事なので、 スクリプトの質問とは少しズレますが分る方がいましたら ご教えていただきたく質問いたしました。

  • LWPモジュールでログインしHTML取得

    use LWP::UserAgent; use HTTP::Request::Common qw(POST); my $url = 'https://toto.netbk.co.jp/main/smm0100'; my %formdata = ('userName' => 'ID', 'loginPwdSet' => 'Pass'); my $request = POST($url,[%formdata]); my $ua = LWP::UserAgent->new; $ua->agent('Mozilla/5.0'); $ua->ssl_opts(verify_hostname => 0); my $res = $ua->request($request); print $res->as_string; サポートされないブラウザーで弾かれます 解決策、教えてください

  • LWPでHTTPSサイトからコンテンツ取得

    LWP::UserAgentを使用してHTTPSサイトから、 コンテンツを取得して解析処理をしたいのですが、 取得できなくて困っています。 Crypt::SSLeayやopensslを入れてアクセスは出来るようになったのですが、 HTTPサイトの場合 $ua = LWP::UserAgent->new; my $Req = HTTP::Request->new('GET', 'http://~'); my $Res = $ua->request($Req); my $content = $Res->content; これで、コンテンツのソースを取得できたのですが、 同じ用にhttpsサイトから取得しようしても 「<HTML></HTML>」だけしか取得できませんでした。 ちなみに my $content = $Res->as_string; としてみると、 HTTP/1.0 200 OK Content-Type: text/html Client-Date: Thu, 08 Dec 2005 08:01:10 GMT Client-Peer: *.*.*.*:8080 ←隠させてもらいます Client-Response-Num: 1 Refresh: 0; URL=https://~ という取得したいHTTPSサイトにジャンプするような 内容が取得できました。 どうにかしてコンテンツ内容を取得したいのですが、 そもそもHTTPSのコンテンツ内容を取得すること自体 出来ないのでしょうか? その場合代案等もありましたら、教えてください。 とても困っています。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • LWPで意図したhtmlがダウンロード出来ない

    LWPライブラリを使ってhtmlソースをダウンロードし たいのですが、指定したURLを、ブラウザを使って閲 覧できる内容と、異なるhtmlソースがLWPでは取得さ れてしまい、困っています。 具体的にはSGD(http://www.yeastgenome.org)内の (http://db.yeastgenome.org/cgi-bin/SGD/locus.pl? locus=ACE2)で表示される内容の、htmlソースが欲し いのですが、何故かlocus.plスクリプト自体がダウ ンロードされてしまいます。IEなどで[名前をつけて 保存]した場合には、希望のhtmlソースが得られるの ですが... ソースコードは以下の通りです。 use strict; use LWP::UserAgent; &get_entry("ACE2.html"); sub get_entry { my($outfile_name) = @_; my $ua = new LWP::UserAgent; $ua->agent("AgentName/0.1 " . $ua->agent); my $req = new HTTP::Request POST => 'http://db.yeastgenome.org/cgi-bin/SGD/locus.pl?locus=ACE2'; $req->content_type('application/x-www-form-urlencoded'); $req->content('started=1&match=www&errors=0&searchstring=CLN3'); my $res = $ua->request($req); unless($res->is_success) { die "Bad luck this time : "; } open(F, "> ".$outfile_name) || die "file open error :"; print F $res->content; close(F); $res->content; }

    • ベストアンサー
    • Perl
  • CGIの接続エラー

    PerlのLWP::UserAgentを使った接続で,エラーが生じてしまいます. ローカルからなら期待通りにページ内容を取得できるのですが,サーバに配置してブラウザからアクセスするとInternal Server Errorとなります. プロキシは使っていません.ファイアウォールやセキュリティソフトを切ってもエラーが生じてしまいます. 対象URL(下のコードではhttp://wikipedia.simpleapi.net/api?keyword=YouTube&output=xml)を変えても同じ結果になります. 理由がわかる方がいらっしゃればご教授願います. CGIにPerl5,サーバにApache Tomcat 5.5を利用しています. エラー内容とコードは下のようになっています. エラー内容 「500 Can't connect to wikipedia.simpleapi.net:80 (Bad hostname 'wikipedia.simpleapi.net')」 コード #!/usr/local/bin/perl use LWP::UserAgent; print "Content-type: text/plain\n\n"; my $ua = LWP::UserAgent->new; $ua->agent("Mozilla/5.0"); my $req = HTTP::Request->new(GET => "http://wikipedia.simpleapi.net/api?keyword=YouTube&output=xml"); my $res = $ua->request($req); $res = $ua->request($req); my $content = $res->content; print $content; exit;

  • Perl HTMLソースから特定のタグ抽出

    use LWP::UserAgent; use HTTP::Request; use HTTP::Response; our $URL = 'https://www.yahoo.co.jp/'; # アクセスする URL my $proxy = new LWP::UserAgent; $proxy->agent('your own created browser name here'); # 任意 $proxy->timeout(60); # 任意 my $req = HTTP::Request->new('GET' => $URL); my $res = $proxy->request($req); my $content = $res->content; print "Content-Type: text/html\n\n"; # HTML ヘッダ (CGI として動作できる) if($res->is_success) { print $content; } else { print 'HTTP エラーコード: ' . $res->code; } これで、HTMLソース全てを取得することはできましたが、 例えば、このソースはヤフーのコードを取得していますが、 ヤフーのコード内で<li></li> リストタグないの文字列がほしいのですが、 どのように抽出すればいいのでしょうか? ヤフーでは、下記のようになっていて <li><a hrf="???????????????">ここの文字列<span>写真</span><span>new</span></li> このソースからここの文字列を抽出させたいです。 さらに、1番目の<li>内、4番目の<li>内といったことも実行したいです。 どうかご教示お願い致します。

  • Perlのコードを隠蔽する

    Perlのソースコードを隠蔽する&ActivePerlなどがない環境でも動くようにperl2exeを使って変換して配布しようと思っています。 逆コンパイラされる可能性が0ではないことはわかっています。 しかし、下記コードの実行がなかなかうまくいきません。実際の.plでの起動時ではうまくいくのですが、.exeに変換するとうまくいかないようです。回避方法を教えてください。 -------------------- use HTTP::Request::Common qw(POST); use LWP::UserAgent; my $ua = LWP::UserAgent->new; my %loginform = ('mail' => 'hogehoge@hoge.jp', 'password' => 'hogehoge'); my $request = POST('https://****/login', [%loginform]); my $res = $ua->request($request); my $cookie = $res->header('Set-Cookie'); --------------------

専門家に質問してみよう