我正在编写一个脚本来将一堆信息提取到一个 HTML 文件中。但是,我在从相关页面中仅提取一组特定的链接时遇到了一些困难。
这是网站的粗略结构。在内部内容 div 和我在下面显示的内容之间还有其他一些标题和段落。
<div id="innercontent">
<h1>Download here</h1>
<a href="website.pdf"><img src="stuff"></a>
</div>
现在在 div ID“innercontent”中找到了多个链接,所以我正在寻找一种方法来匹配字符串或以其他方式只获取我想要的链接。请记住,我要获取的所有链接都是 .pdf,所以这可能会有所帮助。根据我所做的研究,我很确定 TreeBuilder 可以处理这个问题。这是我正在尝试的两种方法。我更愿意使用第一个来解决它。
# link to pdf of transcript
for ( $mech->look_down(_tag => 'a') ) {
next unless $_->as_trimmed_text =~ m/pdf/;
say $_->as_HTML;
}
my @links = $mech->links();
for my $link ( @links ) {
print $link->url;
}
我意识到后一种方法只是在整个页面上搜索链接,但我将它包含在内,以防这种方法更有效,或者这两种方法可以结合使用。
任何帮助或建议将不胜感激!
最佳答案
WWW::Mechanize
能够根据相当多的属性提取链接,例如为链接显示的文本、实际链接或 id。
对于您的具体示例,您将获取 pdf 链接:
my @links = $mech->find_all_links(url_regex=>qr/\.pdf$/)
然后对结果数组做任何你需要的事情。
您可以看到 documentation .和 this doc将向您显示可用的选项。
关于perl - 使用 TreeBuilder 在 Perl 中提取链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32510091/