単語を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です。
よろしくお願いします。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
さくらはHTML::TreeBuilderとかも入ってないですか?
私ならHTML解析を独自に頑張るより、さくらでCPANを使えるように頑張ります。
詳しくは「さくら CPAN」でググって下さい。
この回答への補足
TreeBuilderも入ってないようです。私はライトプランなのでsshが使えないためソフトをインストールすることができません。
当面、最初のやり方で頑張るしかなさそうです。
手動でpmを設置しましたが、やはり上手く動かないためLWP::UserAgentで一つずつ作っていくことにしました。いろいろ教えていただきありがとうございました。
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";
}
この回答への補足
ありがとうございます。ローカルではきちんと作動しましたが、さくらサーバではWWW::Mechanizeがインストールされていないようで出来ませんでした。
LWP::UseAgentを使って同じようにやることはできないのでしょうか。
たびたびお願いします。
No.2
- 回答日時:
この回答への補足
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;
No.1
- 回答日時:
WWW::Mechanizeで
$mech->get( "http://www.google.com/search?q=" . $search_word );
my @links = $mech->find_all_links( class => 'l' );
この回答への補足
因みに、Perlは基本的な文法は勉強したのみで初心者です。
せっかく、回答いただいても理解できないので補足していただけると助かるのですが。
まことに恐縮ですが、宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- HTML・CSS 下にスクロールしても、追従するボタンのコードを書いたのですが、ボタンの中の画像が半分しか表示されない 1 2022/04/16 21:31
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- HTML・CSS cssが効かなくて困ってます 1 2023/01/01 23:57
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
- HTML・CSS html/cssで要素が出てこなくて困ってます 1 2022/12/31 16:59
- HTML・CSS html cssのmargin 5 2022/12/03 11:04
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
css ,videotタグ。ホームページ...
-
POSTしたデータの文字コードがu...
-
ファビコンが表示されない
-
refreshタグ 自動的にジャンプ...
-
Tomcat-ApacheでHTMLを表示させ...
-
iframe時の自動ジャンプ設定のH...
-
自分で<head>内をかけない場合...
-
firefoxでスクロールバーが二重...
-
iframe内の表示を常に最新にしたい
-
HTMLでwebサイトを作ってるので...
-
HTMLファイルのインクルードで...
-
body内にmetaタグを記述は問題...
-
ページを開いたときにファイル...
-
html で 変数を定義できますか?
-
safariだけcssが反映されない
-
COLDFUSIONの文字化け
-
HTMLからフォルダを開きたい
-
Excelで、社外秘(閲覧のみ)と...
-
htmlファイルの表示が真っ白
-
HTMLページが勝手にダウンロー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
css ,videotタグ。ホームページ...
-
POSTしたデータの文字コードがu...
-
body内にmetaタグを記述は問題...
-
根号の書き方について
-
文字化けを故意に表示したい
-
HTMLファイルのインクルードで...
-
先日ウェブデザイン技能検定三...
-
iframe内の表示を常に最新にしたい
-
borderでa:hover下線表示させる...
-
指定した演算を実施の結果を表...
-
ページ全体を中央に配置したい...
-
safariだけcssが反映されない
-
わざと文字化けさせるには
-
WEBページがIEだけ文字化けして...
-
html で 変数を定義できますか?
-
<!DOCTYPE html>あってますか?...
-
COLDFUSIONの文字化け
-
textareaの一行の文字数制御
-
Duolingo のソースコードの名前...
-
Aタグのmailtoでメッセージ作成...
おすすめ情報