2012-04-20 14 views
0

私はMechanize :: Firefoxを使っていくつかのWebスクレイピングを行っていますが、現在は完全にヘッドレスに移行中です。 .pdfファイルを見つけることは非常に良い結果を提供しPerl WebリンクをDOMで検索

my $link = [$firefox->find_link_dom(text_regex => qr/pdf/i)]->[0]->{href} . "\n"; 

:私はこのコードを使用しています。とにかく私はリンクの運命を見つけることができますtext_regexに基づいてブラウザを表示する必要はありません別のモジュールを使用してですか?

私のようなコードのうち、リンクを取り戻すだろうMechanizeの:: Firefoxで

EDIT

<div id="rhc" xpathLocation="noDialog"> 

<div id="download" class="rhcBox_type1"> 
<div class="wrap"> 
    <ul> 
    <li class="download icon"><strong>Download:</strong> 
     <a href="/article/fetchObjectAttachment.action;jsessionid=CDBD1AACEEB3CF89729EB23808FD1319?uri=info%3Adoi%2F10.1371%2Fjournal.pbio.1001193&amp;representation=PDF" title="Download article PDF">PDF</a> | 
     <a href="/article/citationList.action;jsessionid=CDBD1AACEEB3CF89729EB23808FD1319?articleURI=info%3Adoi%2F10.1371%2Fjournal.pbio.1001193" title="Download citations">Citation</a> | 
     <a href="/article/fetchObjectAttachment.action;jsessionid=CDBD1AACEEB3CF89729EB23808FD1319?uri=info%3Adoi%2F10.1371%2Fjournal.pbio.1001193&amp;representation=XML" title="Download Article XML">XML</a> 
    </li> 
    <li class="print icon"><a href="#" onclick="window.print();return false;" title="Print Article"><strong>Print article</strong></a></li> 
    <li class="reprint icon"><a href="https://www.odysseypress.com/onlinehost/reprint_order.php?type=A&page=0&journal=1&doi=10.1371/journal.pbio.1001193&volume=&issue=&title=Evolutionarily Conserved Linkage between Enzyme Fold, Flexibility, and Catalysis&author_name=Arvind%20Ramanathan%2C%20Pratul%20K.%20Agarwal&start_page=1&end_page=17" title="Odyssey Press">EzReprint</a> New &amp; improved!</li> 
    </ul> 
</div> 

は、PDFファイルをダウンロードします。 HTML :: Treebaseがこのリンクを取得しない理由は何ですか?

+1

あなたがヘッドレスのままにXVFBでのFirefoxを実行することができますが、JavaScriptのできるレンダラを持ちますページを解析する(そしてあなたの既存のコードがどこで動作するのか!) – Quentin

答えて

1
use strict; 
use warnings; 
use HTML::TreeBuilder::XPath qw(); 

my $dom = HTML::TreeBuilder::XPath->new_from_content(q(...)); # ... your html code 
my @nodes = $dom->findnodes('//a[contains(@href, "pdf")]'); 

foreach my $node (@nodes) { 
    my $href = $node->findvalue('@href'); 
    ... 
} 
関連する問題