2012-04-16 6 views
3

の配列私はこのコードを持っている:私はリンクのARRAYを探しています、Perlの - ウェブ::スクレーパー - リンク

$VAR1 = { 
      'bc' => [ 
        { 
         'link' => '/' 
        } 
        ] 
     }; 

しかし:

#!/opt/local/bin/perl 
use 5.014; 
use warnings; 
use Web::Scraper; 
use Data::Dumper; 

my $html = do { local $/; <DATA> }; 

my $br = scraper { 
    process 'div#br-wrap > ul', 'bc[]' => scraper { 
     process 'li > a', 'link' => '@href'; 
    }; 
}; 
my $res = $br->scrape($html); 
say Dumper($res); 

__DATA__ 
<html> 
<head><title>title</title></head> 
<body> 
    <div id="content"> 
     <div id="br-wrap"> 
      <ul class="br"> 
       <li><a href="/">Home</a></li> 
       <li><a href="/sub/xxx">Sub-xxx</a></li> 
       <li><a href="/sub/xxx/cat/name">Sub-Cat</a></li> 
       <li><a href="/sub/xxx/item">Sub-Item</a></li> 
      </ul> 
     </div> 
    </div> 
</body> 
</html> 

結果があります。 ..

$VAR1 = { 
      'bc' => [ 
        { 
         'link' => '/' 
        }, 
        { 
         'link' => '/sub/xxx' 
        }, 
        { 
         'link' => '/sub/xxx/cat/name' 
        }, 
        { 
         'link' => '/sub/xxx/item' 
        } 
        ] 
     }; 

コードのエラーはどこですか?

+0

気を付けてくださった方は、この質問に間違いがないか教えてください。 – jm666

+0

私はそれが良い質問の例だと言うことができます。 – zdim

答えて

2
process 'div#br-wrap > ul > li', 'bc[]' => scraper { 
    process 'a', 'link' => '@href'; 
+0

クール - あなたは説明を追加してください - なぜですか?私は一連の "LI> A"の "DIV> UL"を分析したいので、なぜ "LI"を外側スクレーパーに追加する必要があるのですか?とにかくThanx! – jm666

+0

実際には、 'process 'li> a''を' process' a''に置き換えてコードをきれいにするべきです。そしてそれは理にかなっていますよね? (回答が更新されました) –

+0

はい、しかしまだ理解していない、なぜ私のソリューションが動作していません。 Thanx - もっとRTFMを試してみる;) – jm666