【问题标题】:How to extract blocks of text from a HTML page?如何从 HTML 页面中提取文本块?
【发布时间】:2011-03-08 23:15:02
【问题描述】:

我想使用 PHP 从一个大型 HTML 页面中提取超过 100 个单词的文本块。文本是否包含在<p>...</p> 中并不重要。我只关心构成连贯文本块的单词数量,因此 HTML 段落之外的文本也应考虑在内。

如何做到这一点?

【问题讨论】:

    标签: php html html-content-extraction


    【解决方案1】:

    我使用 phpQuery。你熟悉 jQuery 吗?它们共享相同的语法。您可能会担心安装一个新库,但相信我,这个库非常值得额外开销

    phpQuery

    然后您可以像这样访问它:

    foreach($doc->find('p') as $element){
       $element = pq($element);
       echo str_word_count($element->text());
    }
    

    【讨论】:

    • 与 PHP Simple DOM Parser 相比,这会给我带来什么优势?语法似乎相同。
    • 您可以使用 jquery 选择器。所以你可以使用 p:last-child、p + a 或 p:nth-child(2) 等。更大的选择器灵活性只是优点之一,因为 PHP Query 可以像一个完整的服务器到服务器浏览器一样,通过发出请求、检索页面并对其执行一些操作。
    • @lecodesportif:Simple_HTML_DOM 根本没有错误管理工具。因此,当您加载文档时,您无法知道它是否加载。其余的方法也好不到哪里去。就个人而言,我每天都会在 SHTMLDOM 上使用 phpQuery。
    【解决方案2】:

    使用PHP Simple DOM Parser

    foreach($html->find('p') as $element){
       echo str_word_count($element->src);
    }
    

    【讨论】:

    • <p>...</p>中不包含的文本怎么办?
    • 您可以循环遍历所有元素,并轻松挑选出具有大块文本的元素。
    猜你喜欢
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    • 2021-03-25
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    相关资源
    最近更新 更多