【问题标题】:Specify multiple classes in HTML::Element's look_down routine Perl?在 HTML::Element 的 look_down 例程 Perl 中指定多个类?
【发布时间】:2011-10-04 09:32:55
【问题描述】:

我正在使用HTML::TreeBuilder 来解析一些 HTML。

您能否在“look_down”例程中指定多个类?

例如在使用 HTML 搜索时-

for ( $tree->look_down( 'class' => 'postbody'))

我还打算在同一个循环中搜索一个额外的类'postprofile'

有没有办法做到这一点而不必使用新的 -for ( $tree->look_down( 'class' => 'postprofile' ))

因为这会带回 2 组结果,而我只想要一个合并集。

我尝试使用 - for ( $tree->look_down( 'class' => 'postbody||postprofile')) 然而这并没有奏效,

提前谢谢你。

【问题讨论】:

    标签: perl class for-loop html-tree


    【解决方案1】:

    尝试使用模式而不是字符串,即,

    $tree->look_down( 'class' => qr/^(?:postbody|postprofile)$/)
    

    【讨论】:

    • 我希望在这里可以用普通逗号代替粗逗号。
    【解决方案2】:

    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_subconfusing_sub来自Some::Module

    如果你不走运,你的作者只写了use Some::Module;,这意味着你得到了所有的默认导出。这意味着您需要阅读文档以了解导入的内容。

    为了可维护性,您可以通过始终准确指定从函数导入的例程来减少这种噩梦。如果要导入NOTHING,可以指定为:use Some::Module ();

    在寻找简单的子名称时,记住它们可能是实际函数会有所帮助。所以别忘了搜索 perldoc。

    最后,我希望你觉得这很有用。 R-ing TFM 是一种非常强大的技术,学习如何查找相关文档是释放力量的隐藏技能。 Perl 有大量文档要翻阅,当您不知道在哪里查找时,它可能会令人生畏。

    【讨论】:

    • 是的,我确实觉得它很有用,非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    • 2013-01-21
    • 2014-04-04
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    相关资源
    最近更新 更多