我正在使用HTML::TreeBuilder来解析一些HTML。
你能在'look_down'例程中指定多个类吗?
For在HTML中搜索时使用-
for ( $tree->look_down( 'class' => 'postbody'))
我还将在同一循环中搜索另一个类'postprofile'
。
有没有一种方法可以做到这一点,而不必使用新的- for ( $tree->look_down( 'class' => 'postprofile' ))
因为这带来了2组结果,而我只想要一个合并集。
我尝试使用- for ( $tree->look_down( 'class' => 'postbody||postprofile'))
然而,这不起作用,
提前感谢。
尝试使用模式而不是字符串,即
$tree->look_down( 'class' => qr/^(?:postbody|postprofile)$/)
Jambo,我不是想冒犯你,但是请阅读说明书。我给你的问题加了链接。
我将假设你没有阅读文档,因为你找不到它们。让我们来解决的问题:
如何查找所需文档
在线:search.cpan.org是一个用于搜索CPAN模块及其文档的主要网站。
perldoc.perl.org有几个最新版本Perl的完整发布文档。
命令行:
perldoc
显示了一个目录,列出了您可以阅读的文档的不同部分。perldoc -f function
是一种快速搜索perlfunc的方法,只查看一个函数的信息。perldoc Module::Name::Here
将显示一个模块的文档perldoc perlpod
是阅读部分文档的示例,在本例中是关于POD格式化的文章。
我读哪一件事?
这些都很好,但是你怎么知道去哪里看?我的意思是,我用了一个叫做"look_down"的东西。医生在哪里?
在这种情况下,您可以看到"look_down"总是像这样被调用$somevar->look_down(blarg)
。找到$somevar
的来源。它是什么样的物体?最坏的情况是,您发现它是其他调用的结果,现在您必须找到该调用的文档并查看返回的内容。但步骤是一样的。递归推进。最终你会得到my $tree = HTML::TreeBuilder->new_from_content()
或类似的东西。现在你可以在HTML::TreeBuilder中阅读new_from_content
文档了。嘿,我们得到了一个HTML::Tree对象,它是HTML::Element的子类!所以我们检查两个类。哇,look_down在HTML::Element.
如果您有从其他模块导入的例程,这就有点棘手了。希望你的代码的作者足够体贴,明确地列出了他的例程来自哪里:
use Some::Module qw( useful_sub confusing_sub );
这意味着useful_sub
和confusing_sub
来自Some::Module
;
如果你很不幸,你的作者只写了use Some::Module;
,这意味着你得到了所有默认的导出。这意味着你需要阅读文档来找出导入的内容。
出于可维护性的考虑,您可以通过始终准确地指定从函数导入的例程来减少这种噩梦。如果你想导入NOTHING,你可以指定为:use Some::Module ();
在查找普通子名称时,记住它们可能是实际的函数是有帮助的。所以别忘了搜索perldoc.
最后,我希望你觉得这是有用的。r - ring TFM是一种非常强大的技术,学习如何找到相关文档是解锁这种能力的隐藏技能。Perl有大量的文档需要阅读,当您不知道在哪里查找时,它可能会令人生畏。