• 締切済み

PerlでGOOGLEの検索結果を書き出す

単語をGOOGLEで検索すると、ソースでは以下のように表示されます。 <!doctype html><head><meta http-equiv="X-UA-Compatible" content="IE=8"><meta http-equiv=content-type content="text/html; charset=UTF-8"><title>シュウマイ - Google 検索</title><script>window.google={kEI:"oZQ7TdTAAcLMcNDKlYUH",kEXPI:"17259,20782,28186,28233,28290",kCSI:{e:"17259,20782,28186,28233,28290",ei:"oZQ7TdTAAcLMcNDKlYUH",expi:"17259,20782,28186,28233,28290"},ml:function(){},kHL:"ja",time:function(){return(new Date).getTime()},log:function(c,d, 以下略 この長い文章をテキストファイルに書き込みたいと思っています。 できればCGIフォームを使用して、そこに入力された言葉で検索、検索した結果のソースをtxtファイルに保存したいのですが、どなたか教えていただけないでしょうか。 言語はPerlです。 よろしくお願いします。

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

みんなの回答

  • kuroizell
  • ベストアンサー率55% (95/170)
回答No.4

さくらはHTML::TreeBuilderとかも入ってないですか? 私ならHTML解析を独自に頑張るより、さくらでCPANを使えるように頑張ります。 詳しくは「さくら CPAN」でググって下さい。

dai_gokuh
質問者

お礼

手動でpmを設置しましたが、やはり上手く動かないためLWP::UserAgentで一つずつ作っていくことにしました。いろいろ教えていただきありがとうございました。

dai_gokuh
質問者

補足

TreeBuilderも入ってないようです。私はライトプランなのでsshが使えないためソフトをインストールすることができません。 当面、最初のやり方で頑張るしかなさそうです。

  • kuroizell
  • ベストアンサー率55% (95/170)
回答No.3

とりあえずチラ見した限り、my $res = $ua->request( $req );で取った$resが、 その後何もされないまま終わってるように見えますが。 以下がコピペで動きます(Windows用にエンコードしてます)ので、試して下さい。 use Encode; use WWW::Mechanize; my $engine = 'http://www.google.com/search?q='; my $word = 'シュウマイ'; # CGIならmy $word = $q->param('search_word')にでも。 my $mech = WWW::Mechanize->new(); $mech->get( $engine . $word ); my @links = $mech->find_all_links( class => 'l' ); foreach my $link ( @links ) { print encode('cp932', $link->text), "\n"; }

dai_gokuh
質問者

補足

ありがとうございます。ローカルではきちんと作動しましたが、さくらサーバではWWW::Mechanizeがインストールされていないようで出来ませんでした。 LWP::UseAgentを使って同じようにやることはできないのでしょうか。 たびたびお願いします。

  • kuroizell
  • ベストアンサー率55% (95/170)
回答No.2

検索しましたか? http://okwave.jp/qa/q5951803.html それともファイルへの書き込み方が必要なのでしょうか?

dai_gokuh
質問者

補足

WWW::Mechanizeというものについては知りませんでした。 以前、以下のようなソースを書いたのですが、名詞をGOOGLEに渡して、検索結果の中から特定の一単語を返すというものなのですが、上手く動作しません。このソースの問題点について教えていただけますでしょうか。 #!/usr/local/bin/perl package search; use LWP::UserAgent; use HTTP::Request; use Jcode; require 'usemecapi.pl'; sub main() { my ( $word ) = @_; $word = Jcode->new( $word )->utf8;#ここついか my $url = &MakeUrl( $word ); my $ua = LWP::UserAgent->new( agent => 'user agent' ); my $req = HTTP::Request->new( 'GET' => $url ); my $res = $ua->request( $req ); &GetText( Jcode->new( join( '', @data ), "utf8")->eucjp );#euc-jp->eucjp } sub GetText( $ ) { my ( $html ) = @_; $html = Jcode->new( $html )->utf8;#ここついか my @ret; foreach( split( /<br>/, $html ) ) { if( $_ =~ /<div class="s">([\s\S]*)/g ) { my $str = $1; open(OUT,"> googlefile.txt"); print OUT "$_"; close(OUT); #この3行追加↑↑ $str = Jcode->new( $str )->utf8;#ここついか my @data = &mecapi::main( $str ); @data = Jcode->new( @data )->eucjp;#ここついか foreach( @data ) { if( ${ $_ }{ 'speech' } eq '名詞' ) { push( @ret, ${ $_ }{ 'word' } ); } } last; } } return @ret; } sub MakeUrl( $ ) { my ( @words ) = @_; @words = Jcode->new( @words )->utf8;#ここもついか my $url = 'http://www.google.co.jp/search';#/searchを取る $url .= '?'; my @data; push( @data, 'hl=ja&source=hp&biw=913&bih=510' ); my $word = join( ' ', @words ); $word = Jcode->new( $word )->utf8;#ここもついか $word =~ s/ /+/g; $word =~ s/(\W)/'%' . unpack('H2', $1)/eg; push( @data, '&q=' . $word . '&um=1&ie=UTF-8&source=og&sa=N&tab=wi' ); $url .= join( '&', @data ); $url = Jcode->new( $url )->utf8;#ここもついか return $url; } 1;

  • kuroizell
  • ベストアンサー率55% (95/170)
回答No.1

WWW::Mechanizeで $mech->get( "http://www.google.com/search?q=" . $search_word ); my @links = $mech->find_all_links( class => 'l' );

dai_gokuh
質問者

補足

因みに、Perlは基本的な文法は勉強したのみで初心者です。 せっかく、回答いただいても理解できないので補足していただけると助かるのですが。 まことに恐縮ですが、宜しくお願いします。

関連するQ&A

  • 検索登録の結果・・・

    こんにちは。お願いします。 2年ほど前から、考えてます。ホームページの検索登録についてです。 一括登録「登録君」と、「一発太郎」の二つのサイトから登録しております。 その結果、「google」と「Yahoo」ではヒットするようになりました。 そのほかにも、GOO、Exicite、infoseek、フレッシュアイ、Lycosなどが ありますが、同様に登録したつもりなのに、ヒットしません。 やはり、有料の方法を取らないと、ヒットするようにならないのでしょうか? 実は、ホームページの更新を怠り、検索に出てこなくなったので、 ここ2ヶ月ほど前に、登録し直した結果、 やはり「Google」と「Yahoo」しか検索結果に出てきません。 どうぞ、ご教授くださいませ。 なお、問題のページは、@Niftyのスペースで、 http://homepage2.nifty.com/****/index.html の内容は、以下のようになっています。 (もちろんトップページは、フレームページではありません。) <html><head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <meta http-equiv="Content-Language" content="ja"> <meta name="robots" content="キーワード,keyword,きーわーど"> <meta name="keywords" content="キーワード,keyword,きーわーど"> <meta name="description" content="キーワード,keyword,きーわーど"> <title>*******</title></head> <body bgcolor="#fffacd"><center> 本文 </center><pre><font color="#fffacd">少し、文があります </font></pre></body></html>

  • サイトをアップしたのですが検索結果がおかしいです。

    失礼します。 サイトを自分で作成して、アップしました。 しかし、検索にヒットしたものの タイトルに 「トップページ」 と表示され、サイトの説明文(タイトルの下の文言)は レンタルサーバーの説明が出てきてしまいます。 タイトルタグ、メタタグはきちんと設定したつもりなのですが、 困っています。 ご回答よろしくお願いします。 ちなみにソースは <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="description" content="FABFABふぁぶ"> <meta name="keywords" content="FABSOUND,大阪,ファブサウンド,MIXNUTS"> <meta name="robots" content="index,follow"> <meta http-equiv="Content-Style-Type" content="text/css"> <meta http-equiv="Content-Script-Type" content="text/javascript">

  • 検索エンジンについて

    9月の終わりにgoogle検索に登録したのですが 今日検索をかけても自分のHPがひっかからなくて困っています <HTML><HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> <Meta Name="description" Content="こちらに説明"> <Meta Name="keywords" Content="こちらに,検索,タグを入れてます"> <Meta Name="ROBOTS" Content="INDEX"> <TITLE>HPタイトル</TITLE> <style type=text/css> </HEAD><BODY BGCOLOR="#ffffff"> こちらに内容 </BODY></HTML> このように記述しています なぜ検索にひっかからないのかどうしてもわかりません 原因がわかる方がいらっしゃいましたら教えてください

    • ベストアンサー
    • HTML
  • Googleの検索結果で右矢印の先が文字化け

    Googleで検索結果が表示されている時に、その検索結果の上にマウスを持っていくと右側に矢印が表示されますよね。 そして、その矢印の上にマウスを持っていくと、さらに右側にページイメージが表示されます。 この時、ページタイトルは正しく表示されるのですが、ページイメージの中の文字と、サマリーの文字が文字化けします。 この原因がわかる方はおられませんか? レンタルサーバーはKagoyaです。 当該ページのHEAD内で <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">でも <meta http-equiv="Content-Type" content="text/html; charset=shift_jis">でも 文字化けします。

  • 検索結果が文字化けしてしまう。

    数週間前にアップロードしたサイトを検索にかけると文字化けして出てきてしまいます。 アップした当初は問題なかったのですが…三日前から文字化けすようなってしまいました。 文字コードがおかしいのか思ったんですが…原因がわからなくて困っています。 どなたか教えてください!! 下記がソースです↓ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head> <meta http-equiv="content-type" content="text/html; charset=shift-jis"> <meta name="generator" content="Adobe GoLive 4"> <meta name="description" content="○○○○"> <meta name="keywords" content="○○○○"> <meta http-equiv="Content-Style-Type" content="text/css"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title>○○○○</title> <!-- ImageReady Styles (indexnew.psd) --> <!-- End ImageReady Styles --> <style type="text/css"> <!-- #index-01 { position: absolute; top: 0px; left: 0px; width: 333px; height: 95px; visibility: visible }--- このあとも続きますが、問題解決に必要であればまた載せます。よろしくお願いします。

    • ベストアンサー
    • HTML
  • googleに飛べない

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <script language="JavaScript"> <meta http-equit="refresh"content"0;http://www.google.co.jp/"> </script> <META name="GENERATOR" content="IBM WebSphere Studio Homepage Builder Version 13.0.4.0 for Windows"> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> <title> </title> </head> <body> <noscript> <br>JavaScriptを有効にして下さい<br> </noscript> </body> </html> googleに飛べないのですがどこの記述が間違っているのでしょうか? ご教示お願いします。

  • google対応メタタグ

    http://affiliate-bible.com/affiliate_seo.htmlを見て、こんな風にしましたが、メタタグは、google対応になっているでしょうか?あと、ここが間違っているよ。という場所があったらご指摘お願い致します。 <TITLE>サイト名</TITLE> <meta http-equiv="Content-Language" content="ja"> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META NAME="keywords" CONTENT="キーワード1,キーワード2,キーワード3"> <META NAME="description" CONTENT="キーワード1"> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META name="GENERATOR" content="IBM WebSphere Studio Homepage Builder Version 8.0.0.0 for Windows"> <META http-equiv="Content-Style-Type" content="text/css"> <META name="IBM:HPB-Input-Mode" content="mode/flm; pagewidth=940; pageheight=1200"> <META name="GENERATOR" content="IBM WebSphere Studio Homepage Builder Version 8.0.0.0 for Windows"> 上記のサイトでは一応グーグル対応のメタタグと書いていますが、他で教えてもらったのにはmeta nameをgooglebotにするとgoogle対応とのことですが、どうなんでしょう。どうか、お返事宜しくお願い致します。

  • メタタグを修正してもgoogleに検索されません。なぜ?

    タイトルそのままです。 あるHPで勉強して以下のように修正しました。 しかし、拾ってもらえません。 何がいけないのでしょうか? 易しく教えて下さい。 <head> <title>経済編入予備校</title> <meta http-equiv="Content-Type" content="text/html; charset=x-euc-jp"> <meta name="robots" content="index,follow"> <meta name="description" content="東京大学の大学院生が講義する経済学部編入に専門化した予備校です。"> <meta name="keywords" content="経済学,経済編入予備校,予備校,編入学,編入,経済学部,東京大学,合格体験談">

  • Googleに検索されない

    3が月前にホームページを作成したのですが検索エンジンに検索されません。 今現在ページランクは3です。 Googleにサイトの登録もしました。 また http://ippatsu.net/TARO/ の一発太郎を使い登録もしました。 サイト内には登録されやすくするために <meta name="robots" content="index,follow"> <META name="keywords" content="キーワード"> <META name="description" content=""> も入れています。 しかし未だに検索されません。 アドバイスをお願いします。

  • 検索結果のタイトル文字化け

    検索ロボット(goo google)に自分のHPを登録し、キーワードを入れて、検索した結果、タイトルや説明文が文字化けてしまいます。 メタタグで <meta http-equiv="content-type" content="text/html; charset=Shift_JIS"> 指示しているのにもかかわらず、文字化けします。 また、別のページに同じメタタグをいれているものでは、 ちゃんと表示できたりと、何が原因で文字化けているのかが、わかりません。 やはり、HTML保存時に、問題があるのでしょうか?

専門家に質問してみよう