• 締切済み

perlのソケットで

perlのソケットを利用してYahoo!の検索結果を取得させるように しているのですが、 ご不便をおかけして申し訳けございませんが、 ご覧になろうとしているページは現在表示できません と表示されるときがあり、制限?にひっかかるようになりました。 もともとソケットで取得させること自体に問題があるのでしょうか? 同じ所からある程度のリクエストがあれば このような状態になってしまうと思うのですが・・・。 何か良い方法がありましたらご教授いただけると幸いです。

  • CGI
  • 回答数1
  • ありがとう数0

みんなの回答

  • agharta
  • ベストアンサー率52% (54/103)
回答No.1

どのくらいの頻度で、取得しているのでしょうか。 もし、インターバルを全然入れずに行っていると、 悪意のあるロボットとして認識される場合があります。 参考になればと思い、書きました。

miku881
質問者

補足

ご回答ありがとうございます。 キーワードアドバイスツールプラスのようなものを 自前で作成しようと思っているのですが、 どうしてもキーワードごとに件数を 取得しないといけなくなってくると思います。 キーワードアドバイスツールプラスでは 制限にひっかからずにYahoo件数を取得できているようですが、 どうやっているんでしょう? 取得先に毎回リクエストさせずに 取得させる方法は無いものでしょうか。 一度よみこんだものをキャッシュさせたとしても、 キャッシュがないものを読み込むとまた制限にひっかかってしまうと 思います。 もし何か良い方法がありましたらご助言いただけると幸いです。

関連するQ&A

  • perlのソケットで

    perlのソケットを利用して yahoo!検索結果を取得させているのですが、 検索設定がデフォルトの状態で取得となるために、 クロール日などが表示されません。 検索する上でのYahoo!の設定がcookieを利用していますので そのcookieをソケット上でも有効にして 取得させたいのですが可能でしょうか? Yahoo!の設定画面 http://search.yahoo.co.jp/search/preferences?pref_done=http%3A%2F%2Fsearch.yahoo.co.jp%3Fei%3DUTF-8 たとえば設定画面のクロール日表示設定を有効にした状態の 検索結果をソケットによって取得させたいといった形です。 phpで方法があればそちらでも構いません。 GETで設定をそのまま渡しても上手くいきませんでした。 もし上手い方法があるようでしたら、 詳細なソースを教えていただけるととても幸いです。 何卒宜しくお願い致します。

    • ベストアンサー
    • Perl
  • perlの実行結果をキャッシュ

    お世話になります。 perlの実行結果を一定期間キャッシュさせて、 キャッシュが存在しているなら、perlで処理させずに キャッシュを参照して表示させるようにできればと思っているのですが 何か効率の良い方法などありますでしょうか? 毎回、毎回処理をさせることなく、 一度処理したものはキャッシュさせて、 次回からはそのキャッシュを参照させて 少しでも負荷軽減になればと思っています。 ただ、ソケットを利用してWEBからデータを取得させているので、 一定期間になるとまたキャッシュを取り直す・・・ といったことをしたいのですが・・。 やっかいな事に1パターンではなく、 表示件数指定などもあり、ユーザーの設定によって 変化する部分が多いので、それごとにキャッシュをとらせる必要がありそうですが、動的に生成されるものをキャッシュさせる場合に 良い方法がありましたらご教授いただけましたら幸いです。 まだまだperl初心者枠のレベルだと思いますので できれば詳しく教えていただけましたら助かります。 宜しくお願い致します。

  • perlでHTTP Request Headersの情報を取得、表示す

    perlでHTTP Request Headersの情報を取得、表示するページを作成したい 当方初心者です。 apache上のCGI(perl)で、ブラウザから受け取った HTTP Request Headersの情報を取得、出力するページを作成したいのです。 調べると下記のようなサーバ環境変数の取得、表示方法は多数ヒットするのですが =================================================== #!/usr/bin/perl -- print << "DOC1"; Content-type:text/html\n\n <HTML><BODY> DOC1 print $ENV{'HTTP_USER_AGENT'}<br>\n"; print $ENV{'REMOTE_ADDR'}"; print << "DOC2"; </BODY></HTML> DOC2 =================================================== 今回は、環境変数からではなく、HTTP Request Headersから 直接ヘッダに格納された情報を取得したいのです 取得・表示したい情報は標準HTTPヘッダ情報に加え、 途中で経由するプロキシが追加するヘッダ情報です。 完成イメージとしては PHPの<? phpinfo() ?>で出力できる 添付画像にあるような形なのですが どのようにすればできるのでしょうか サンプルの形で教えて頂けると助かります 参考になるページでも結構です よろしくお願いします

  • perlのソケットがうまく作動しません。

    sakuraインターネットサービスでドメインを取得して、通常はそこでサービスを使っているのですが、このページの情報を、自分の持っているもうひとつのホームページ(プロバイダによって与えられたもの)上でも、データを引っ張り出して同じ情報を使いたいと思っているのですがうまくいきません。 どのようにしたらうまくいくものでしょうか? ご教授、宜しくお願い致します。 #!/usr/local/bin/perl $host = "domain.com"; $file = ""; use IO::Socket; print "Content-type: text/html\n\n"; $file = "/"."$file"; $remote = IO::Socket::INET->new( Proto => "tcp", PeerAddr => "$host", PeerPort => "host(80)", ); unless ($remote){die "cannnot connect to help daemon on $host";} $remote->autoflush(1); print $remote "GET $file HTTP/1.0\n\n"; while(<$remote>){ print "$_"; }

    • ベストアンサー
    • Perl
  • リダイレクト失敗時のエラー取得(perl)

    はじめまして。 リダイレクト失敗時のエラー取得(perl)について質問させてください! CGI(Perl)で、 print "Location: (リダイレクト先URL(他サーバ))\n\n"; としたとき、リダイレクト先のサーバが稼働していなくて、ページが表示 されず、「サーバが見つかりませんでした」などと表示されることがよく あります。 サーバがダウンしているときは別のページを表示するようにしたいのです が、何か方法はあるでしょうかぁ? ●思い当たるキーワードでいろいろ検索してみましたが、該当する物を見 つけられませんでした。 ●下記のコードを試してみましたが、やっぱりダメでした。 →エラーとして認識されず、アドレスバーに他サーバのリダイレクト先URL が表示された状態で「サーバが見つかりませんでした」と表示されまし た。 eval { print "Location: (リダイレクト先URL(他サーバ))\n\n"; }; if ($@) { print "Location: (リダイレクト先URL(自サーバ))\n\n"; } ●「自サーバ」はniftyをしており、niftyではソケット通信が出来ませ ん。 よろしくお願いいたします~!

    • ベストアンサー
    • CGI
  • perlの初心者本買ってきたものの・・・

    つい最近perlに手を付けて、非常に手こずっています。何に手こずっているかも申しますと、ほんの通りにプログラムを書いてもうまく動作しないことです。本は「Perl/CGI超入門」(藤森○絵)筆です。入力フォームのボタンをクリックしてもWEBページ(localhost)が「開くことができません」とでます。HTML、○.plどちらも指定したフォルダに入っています。HTMLのページは入力フォームですがちゃんとWEBに出ます。でも、フォームの中の文字列を取得してCGIのページになると表示されません。perlはCygwin,Activperlとも試してみました。CGIのページに跳んだときのURLは本に書いているURLと同じくでます。 著者へ質問できるようなアドレスも無く、技術評論者に質問できるようなページもないので、なすすべ無しといったところです。私のPCの設定に問題があるのかもと思い、インターネットセキュリティーソフトをおアンインストールしてみましたが同じでした。内心、これを超初心者として出版しているのであれば、本当に初心者のものは皆頭にきてしょうがないだろうなというのが本音です。perl自体の言語で引っかかっているのではなく、サンプルプログラムが動作しない(コピペで)。どなたか同じ本を買った方で、原因が分かるか方おりませんでしょうか。

    • ベストアンサー
    • Perl
  • Perlにこのようなことはできるのでしょうか

    質問させていただきます 最近ちょっとcgiに触れているのですが、perlには次のようなことは可能なのでしょうか 可能ならばもう少し勉強して実際にそういった動きをするcgiを作ってみたく思っています 1.テキストボックスにUrlを入力してもらう 2.送信ボタンが押されたらUrlを参照して対象のページの内容を見にゆき、 3.その中を文字列検索して欲しい情報を持ってきて、表示する cgiに「できること」は様々なページに載っていたのですが、「できないこと」はさすがに載っておらず 2.の部分ができるのかできないのかがよくわかっておりません cgiで可能なのかどうか、もし不可能ならばそういった動作を行うのによいのはどんな言語なのか というのをご返答いただければと思います。

  • Perlを使って、オークションの落札情報を取得したい

    Yahooオークションの出品をし、落札してもらった情報を一括してダウンロードし、出品物毎に間違いなく落札者のメールアドレスを取得したり、落札価格を取得したりして、一覧表を作りたいと思っています。 自分自身の作業ミス低減のためなので、CGI等でWEBに公開する必要はなく、ローカルマシンのPerlやRubyで実行してテキストファイルが吐き出せればよいと考えているのですが、何か参考例などをご存知の方はいらっしゃいませんでしょうか? 自分で考える手順としては... 1.Yahoo!オークションにログオン 2.マイオークションの出品終了分のページを取得 3.HTMLを解析して、一通りのオークションIDを取得 4.オークションごとに出品ページを取得 5.HTMLを解析して、落札者のID,メールアドレス,落札単価を抽出 というように考えていますが、そもそも、考え方が間違っていたりしますでしょうか? Perlで実装する場合のヒント(このモジュールのこんなメソッドを使う)とか、参考になるサイト、手順の誤りの指摘などいただければ...と思います。 ちなみに自分のスキルとしては、Perlのコードをちょっとは書ける様になったかな?というくらいのPerl駆け出しレベルですが、プログラムの基礎知識(ネットワークプログラムは除く)はありますので、何とか情報のポインタでも頂けると幸いです。

  • perlでのメタ文字の表現について

    perlでパラメータを取得する際、 文字に決まりがあるIDやpass は $q='&'.$ENV{'QUERY_STRING'}; $q=~/\Wpass=(\w+)/; $pass=$1; 等で取得出来るのですが、メールアドレスの取得となるとどのようにメタ文字で表現すればいいのか分かりません。 どなたかご教授下されば幸いです。

  • htmlとperlを記述する時の文字コードについて

    今からホームページを作成するところです。 やりたいこととして、 1.html全体はShift_JISで記述 2.Shift_JISのtxtファイルから検索をかけて該当レコードを表示させるページをperl(CGI)でhtmlとして出力 この場合perlはShift_JISで記述すると問題があるでしょうか? CGIでtxtファイルを操作したとき内部ではeuc-jpで扱われる為、入出力の際にはjcodeなどを使った相互変換が必要になるとか思いますが、こちらの問題は取りあえずおいておきます。 perl自体はやはりeuc-jpで記述すべきでしょうか? htmlも含めて全てeuc-jpで記述すれば問題ないかと思うのですが今後の参考の為に聞いておきたいと思い質問させて頂いております。 また、上記のやりたいことを実現するのにperl以外のもっと良い方法があればご紹介頂ければ幸いです。 何卒よろしくお願い致します。

    • ベストアンサー
    • Perl

専門家に質問してみよう