我試圖用Perl來製作一個小應用程序,以從LolKing中獲取英雄聯盟的召喚師名字。如何使用Perl訪問JavaScript驅動的網頁的內容?
的HTML代碼有像
<tr data-summonername="MatLife TriHard" class="lb_row_rank_4">
線,所以我只是有一些事情像
use strict;
use warnings;
use LWP::Simple;
use HTML::Parser;
my $find_links = HTML::Parser->new(
start_h => [
sub {
my ($tag, $attr) = @_;
if ($tag eq 'tr' and exists $attr->{'data-summonername'}) {
print "$attr->{'data-summonername'}\n";
}
},
"tag, attr"
]
);
my $html = get('http://www.lolking.net/leaderboards/#/na/1') or die 'nope';
$find_links->parse($html);
但是這給我什麼。即使有attr=class
,它也不會給我什麼。由於某些原因,我無法獲取tr
元素的類。
使用$attr->{data-summonername}
沒有單引號給我一些錯誤,由於連字符我想。如果我取$attr->{href}
它工作得很好。
有人可以幫我嗎?
無恥插頭:在Windows上,你可以[獲得使用Internet Explorer網頁內容](http://perltricks.com/article/139/2014/12/ 11/Automated-Internet-Explorer-screenshots-using-Win32-OLE),然後使用[HTML :: TableExtract](http://www.nu42.com/2012/04/htmltableextract-is-beautiful.html)提取您需要的信息。如果你不在Windows上,[通過Firefox獲取頁面內容](http://perltricks.com/article/138/2014/12/8/Controlling-Firefox-from-Perl),然後使用HTML :: TableExtract '。當然,也有[PhantomJS](http://phantomjs.org/)。 – 2015-03-19 12:02:20