我刚刚开始在Perl,并写了一个简单的脚本来做一些web刮.我使用WWW :: Mechanize和
HTML :: TreeBuilder来完成大部分的工作,但是我遇到了麻烦.我有以下HTML:
<table class="winsTable"> <thead>...</thead> <tbody> <tr> <td class = "wins">15</td> </tr> </tbody> </table>
我知道有一些模块从表中获取数据,但这是一个特例;不是我想要的所有数据都在表中.所以,我试过:
my $tree = HTML::TreeBuilder->new_from_url( $url ); my @data = $tree->find('td class = "wins"');
但是@data返回空.我知道这个方法将没有类名称,因为我已经使用$tree-> find(‘strong’)成功地解析了数据.那么,有没有可以处理这种类型的HTML语法的模块?我扫描了HTML :: TreeBuilder文档,没有发现任何似乎,但我可能是错的.
解决方法
我使用的很好(有时候有点慢)HTML :: TreeBuilder :: XPath模块:
my $tree = HTML::TreeBuilder::XPath->new_from_content( $mech->content() ); my @data = $tree->findvalues('//table[ @class = "winsTable" ]//td[@class = "wins"]');