我试图用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