• 締切済み

WWW::Mixi::Scraper

はじめまして。Perl初心者です。 このたび、WWW::Mixi::Scraperを使ってみようと思い、 http://search.cpan.org/~ishigaki/WWW-Mixi-Scraper-0.11/lib/WWW/Mixi/Scraper/Mech.pm の、 SYNOPSISに書いてあるソースを実行してみたのですが、 Use of uninitialized value in concatenation (.) or string at [パス]/WWW/Mixi/Scraper/Mech.pm line 18. logged in to mixi at [パス]/WWW/Mixi/Scraper/Mech.pm line 44. Undefined subroutine &WWW::Mixi::Scraper::Mech::_uri called at [パス]/WWW/Mixi/Scraper/Mech.pm line 72. と、エラーが出てしまいました。 ちなみに、foo@~のところとpasswordには自分のmixiにログインするパスを入れています。 他に追記が必要なのかとも思いましたがまったくわかりません…。 どなたかご教授いただければ幸いです。

みんなの回答

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

まだ深いとこまでつめてないんですけど、 Perl のライブラリが格納されているディレクトリの下の WWW/Mixi/Scraper/Mech.pm というファイルに一行追加してみてください。 use WWW::Mechanize::DecodedContent; use WWW::Mixi::Scraper; #←追加 use WWW::Mixi::Scraper::Utils qw( _uri ); 多分これで動きます。 > どなたかご教授いただければ幸いです。 「教示」 誤字等の館:ご教授願います http://www.tt.rim.or.jp/~rudyard/torii009.html

amk111
質問者

お礼

回答ありがとうございます! とりあえず Use of uninitialized value in concatenation (.) or string at [パス]/WWW/Mixi/Scraper/Mech.pm line 18. Undefined subroutine &WWW::Mixi::Scraper::Mech::_uri called at [パス]/WWW/Mixi/Scraper/Mech.pm line 72. の2つのエラー表示はでなくなりました。 その代わりなぜか logged in to mixi at [パス]/WWW/Mixi/Scraper/Mech.pm line 44.が 3つも出てきてしまうようになったのですが…。 でもこれは問題なさそうだったのでほっといています。 >誤字 お恥ずかしいです。ご教示ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ワーニング? encoding.pm

    perlで以下のようなエラーが出るのですが、これを出ないようにするにはどうしたらよいのでしょうか? Constant subroutine DEBUG redefined at c:/usr/lib/encoding.pm line 8. Subroutine _exception redefined at c:/usr/lib/encoding.pm line 23. Subroutine in_locale redefined at c:/usr/lib/encoding.pm line 34. Subroutine _get_locale_encoding redefined at c:/usr/lib/encoding.pm line 36. Subroutine import redefined at c:/usr/lib/encoding.pm line 89. Subroutine unimport redefined at c:/usr/lib/encoding.pm line 156.

    • ベストアンサー
    • Perl
  • MOVABLE TYPEのエラーについて

    MTを使い、MacでBlogを作っています。 何も設定を変えた覚えはないのですが、 最近、エントリーの投稿時に以下のエラーメッセージが出るため気になっております。 Use of uninitialized value in substitution (s///) at /Users/ユーザ名/Sites/cgi-bin/mt/extlib/Jcode/Unicode/NoXS.pm line 77. Use of uninitialized value in unpack at /Users/ユーザ名/Sites/cgi-bin/mt/extlib/Jcode/Unicode/NoXS.pm line 105. Use of uninitialized value in substitution (s///) at /Users/ユーザ名/Sites/cgi-bin/mt/extlib/Jcode/Unicode/NoXS.pm line 77. Use of uninitialized value in unpack at /Users/ユーザ名/Sites/cgi-bin/mt/extlib/Jcode/Unicode/NoXS.pm line 105. Use of uninitialized value in substitution (s///) at /Users/ユーザ名/Sites/cgi-bin/mt/extlib/Jcode/Unicode/NoXS.pm line 77. Use of uninitialized value in unpack at /Users/ユーザ名/Sites/cgi-bin/mt/extlib/Jcode/Unicode/NoXS.pm line 105. Use of uninitialized value in substitution (s///) at /Users/ユーザ名/Sites/cgi-bin/mt/extlib/Jcode/Unicode/NoXS.pm line 77. Use of uninitialized value in unpack at /Users/ユーザ名/Sites/cgi-bin/mt/extlib/Jcode/Unicode/NoXS.pm line 105. 何かUnicodeのモジュールでトラブっているようですが、 さっぱりわかりません。 Blog開設時はOSX 10.3のEUC-JPで運用し、 10.4に変えたタイミングで文字コードをUTF-8に変更しました。 エントリーの投稿自体は問題なくできるのですが、 気になるためどうにか対処したいと思っています。 どうかアドバイスをお願いいたします。 利用環境 OS:Mac OSX 10.4 MT Version:3.151-ja

    • ベストアンサー
    • Perl
  • WWW::Mechanizeについて教えてください

    WWW::Mechanizeついて 質問させて頂きます。 他でも質問しておりますが、回答が無かったためマルチですがご了承ください。 WWW::Mechanizeを使ってログインしようとしてるのですが、うまく行きません。 <form action="login.cgi" name="form1" method="post"> <input id=id name='id' type='text' /> <input id=pass name='pass' type='text' /> <input type="submit" name="submit" value="LOGIN" /> 上記のフォームでは正常に取得できます。 しかし、ログインチェックをJavascriptからPHPに渡ってるページでの ログインがうまく行きません。 ソース //入力チェック /*login_checkたとえです*/ function LOGIN(){ $( "userid" ).className = ""; $( "userpassword" ).className = ""; if( login_check( "id" ) ){ if( login_check( "pass" ) ){ document.form1.action = "login.php"; document.form1.Btn_Type.value = "login"; document.form1.submit(); }else{ $( "pass" ).className = "error"; } }else{ $( "id" ).className = "error"; } } <form action="login.php" name="form1" method="post"> <input id=id name='id' type='text' /> <input id=pass name='pass' type='text' /> <input type="button" name="loginbtn" value="LOGIN" onclick='JavaScript:LOGIN();'/> 上記のフォームにログインしようと下記のようにしました。 my $loginUrl = 'http://hoge.jp/login.php'; my $mech = WWW::Mechanize->new(cookie_jar => $cookie_jar); $mech->agent_alias('Windows IE 6'); $mech->get($loginUrl); $mech->form_name('form1'); $mech->field( id => "test" ); $mech->field( pass => "test" ); $mech->click_button( value => 'Login' ); print $mech->content(); これで実行するとエラーがでます。 Can't call method "header" on an undefined value at /usr/lib/perl5/site_perl/5.8.8/WWW/Mechanize.pm line 2471. $mech->click_button( value => 'Login' ); 上記のclick_buttonでvalueを指定するとエラーになります。 WWW::MechanizeはJavascriptは実行できないのでしょうか? お知恵をお貸しいただけませんでしょうか。 説明不足かもしれませんがお願い致します。

    • ベストアンサー
    • Perl
  • ムーバブルタイプ3.2のBerkeleyDB⇒SQLへの移行について

    現在ロリポップでムーバブルタイプ3.2で新規にblogを作りました。 データ形式をはじめはBerkeleyDBで使用していたのですがSQLへ移行を行ないたいと思い以下のものを利用してみたのですが以下のエラーがでます。 http://as-is.net/wiki/MT_Database_Converter/ja mt-db-convert.cgi($Rev: 173 $): Converting your MT data between DB engines (for MT 3.2) **** WARNING: Subroutine Jcode::ucs2_euc redefined at extlib/Jcode/Unicode/NoXS.pm line 56. **** WARNING: Subroutine Jcode::euc_ucs2 redefined at extlib/Jcode/Unicode/NoXS.pm line 71. **** WARNING: Subroutine Jcode::euc_utf8 redefined at extlib/Jcode/Unicode/NoXS.pm line 87. **** WARNING: Subroutine Jcode::utf8_euc redefined at extlib/Jcode/Unicode/NoXS.pm line 94. **** WARNING: Subroutine Jcode::ucs2_utf8 redefined at extlib/Jcode/Unicode/NoXS.pm line 101. **** WARNING: Subroutine Jcode::utf8_ucs2 redefined at extlib/Jcode/Unicode/NoXS.pm line 124. どのような設定をすればSQLに移行できるのでしょうか?

  • 同じディレクトリに置いたpmが「Can't locate」になってしまう

    main.pl にて、 use WWW::Mixi; print "test"; として、同じディレクトリにMixi.pmを置いています。 別環境の方に配布したい関係で、CPANからのインストールは 考慮したくない場合、このMixi.pmをmain.plから利用するには、 どのように書けばよいのでしょうか? use lib qw(./); や、main.plがあるディレクトリから、 WWW/Mixi/ というディレクトリを掘ってそこに置く 等も試してみましたが、Can't locate と言われてしまいます。 または、不可能でしょうか?

    • ベストアンサー
    • Perl
  • sledgeのセットアップ

    主題の件で質問です。cpanモジュールのロードエラーが度々発生し足りないモジュールを足しながら対処してきたのですが、下記のエラーの大元が分かりません。 Premature end of script headers: index.cgi Subroutine Sledge::Registrar::context redefined at Sledge/Pages/Base.pm line 79. No such file or directory at HelloWorld/Config.pm line 11. Can't locate object method "new" via package "Template" (perhaps you forgot to load "Template"?) at C:/xampp/Sledge-1.11/lib/Sledge/Template/TT.pm line 51. エラーは、apacheのerror.logです。

  • 実行中のcpan processを終了させる方法をご存知ないでしょうか。

    windowsのコマンドプロムプトからcpanシェルを起動しモジュールをインストールした際、cpanシェルをquit等で終了せずに、そのままコマンドプロムプトのウインドウを閉じました。再度cpanシェルを起動しようとしたところ、別のcpan processが実行中であると表示が出ます。その実行中のcpan processを終了させる方法をどなたかご存じありませんか。お手数ですが、ご回答の程よろしくお願いします。(コンピュータに詳しくありませんので、出来るだけ簡単に説明して頂ければ幸いです。) 再度cpanシェルを実行した際のプロムプト画面(一部"***"に書換えています): -------------------------------------------------------------- C:\***>perl -MCPAN -e shell Exiting subroutine via last at C:/Perl/lib/CPAN.pm line 1337. There seems to be running another CPAN process (pid ***). Contacting... Other job is running. Shall I try to run in degraded mode? (Y/n) [y] n You may want to kill the other job and delete the lockfile. On UNIX try: kill *** rm C:\Perl\cpan\.lock -------------------------------------------------------------- 以上です。

    • ベストアンサー
    • Perl
  • utf-8コードの指定

    以下のURLにて同じ質問をしました。 http://soudan1.biglobe.ne.jp/qa4938782.html その時は解決したと思ったのですが、私の勘違いでした。 Undefined subroutine &main::Jcode called at listpage.pl line 220, line 855. というエラーからして、 $value = Jcode($value)->utf8; という記述そのものの問題ではなく、jcode.pmが認識されていないということなのでしょう。 でもプログラムの最初には use Jcode; としてあるし、パスが通っていないことも考えて#!(何と呼ぶんだったっけ?)も #!/usr/bin/perl -I /usr/lib としました。perl.exeをd:\usr\bin/に置いて /usr/bin/perl で良いなら、jcode.pmはd:\usr/libにあるからパスはこれで良いですよね!? ちなみにこのディレクトリにはcgi.pmも置いていますが、cgi.pmは普通に動いてます。 何が問題だと考えられますか? お手数をお掛けします。

  • ActivePerlのWWW::Mechanize::Firefoxに

    ActivePerlのWWW::Mechanize::Firefoxについて教えてください。 http://maaash.jp/perl/wwwmechanizefirefox%E3%81%A7%E7%B0%A1%E5%8D%98%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88/ 上記のURIを参考にHPの自動テストとスクリーンショットを行うプログラムを作ろうとしています。 当方はPerl及びLinuxsは素人です。 まず、Windows XP sp3に ActivePerl v5.10.1をインストールして 上記サイトに記述されているソースをもとにソースファイルを作り実行したところ 「Can't locate WWW/Mechanize/Firefox.pm in @INC (@INC contains: C:/Perl/site/lib C:/Perl/lib .) line 3」 とエラーが表示されたので。 http://search.cpan.org/~corion/WWW-Mechanize-Firefox-0.31/ ↑よりファイルをダンロードして「Perl Package Manager」でインストールしたところ 「WARNING: Installing WWW-Mechanize-FireFox-0.11 would downgrade HTML::Display::MozRepl from version 0.31 to 0.11」と表示されます。 そこから色々と調べながらやっているのですが先に進めません。 Googleで調べてみると「WWW::Mechanize」ってすげー簡単とか賞賛する書込みが多いためすごい ショックでくじけまくってます。 先に進むためのヒントだけでもお願いできないでしょうか?

  • Parallel::ForkManager(2)

    前回の投稿で完全に書き間違えた部分がありそのままではよくわからないものになってしまっていたのですが、投稿し直しなどができなかったので再度投稿させてもらいます。 プログラムは use Web::Scraper; use WWW::Mechanize::Firefox; use Parallel::ForkManager; use URI; binmode STDOUT,":utf8"; sub func ; ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(); $year += 1900 ; $mon += 1 ; $File = "yuma-$year:$mon:$mday:$hour.txt" ; open (file,"> $File") or die 'fail to open file\n'; print "HOW MUCH PAGE\n" ; my $page = <STDIN> ; print "WITEING...\n" ; my $MAX_PROCESSES = 5; my $pm = new Parallel::ForkManager($MAX_PROCESSES); for ($i = 1;$i <= $page;$i++) { $pm->start and next; my $uri = URI -> new ("www.目的とするURL$i.html"); my $mech = WWW::Mechanize::Firefox->new(); $mech->get($uri) ; print file $s->scrape($mech->content) ; print file "\n" ; print file $r->scrape($mech->content) ; print file "\n" ; $pm->finish; } print "WITEID\n" ; my $s = scraper { process 'font',sen => 'TEXT'; result 'sen'; }; my $r = scraper { process 'div#content',ren => 'TEXT'; result 'ren'; }; close (file) ; です。 $i の順序でファイルへ書き込みをしていきたいのですが、前の処理が終わっていなかった場合に待つ方法がわからないので初心者レベルで教えてください。

    • ベストアンサー
    • Perl