我正在尝试使用pQuery抓取网站,并在所有img标记中获取src属性。
这是我到目前为止所尝试的内容:
@imgs = pQuery("http://search.cpan.org/~ingy/pQuery-0.07/lib/pQuery.pm")
->find("img")
->each(sub{
my $i = shift;
print $i + 1, ") ", pQuery($_).attr('src'), "\n";
});
输出表明有12个img元素,并且没有为.attr('src')
打印任何内容
有没有关于如何使用pQuery的全面指南?
答案 0 :(得分:2)
我不了解pQuery,但我建议改用Web::Query。 Web :: Query是pQuery的替代模块。
use Web::Query;
wq("http://search.cpan.org/~ingy/pQuery-0.07/lib/pQuery.pm")->find("img")->each(
sub {
my $i = shift;
print $i + 1, ") ", $_->attr('src'), "\n";
}
);
此代码效果很好。
答案 1 :(得分:2)
我可以看到pQuery()已经包含了一个dom元素查找机制,如果传递一个元素作为它对域的第一个参数。删除find($ sub),并用' img'取消你的pQuery参数。
my $dom = 'http://search.cpan.org/~ingy/pQuery-0.07/lib/pQuery.pm';
@imgs = pQuery("img", $dom)
->each(sub{
my $i = shift;
print $i + 1, ') ', pQuery($_).attr('src'), "\n";
});
您是否有任何理由使用无关的find()而不是使用集成调用方法构建此例程?
花时间根据CPAN中提供的文档重新阅读您的代码,通常有大量有关模块工作原理的信息。