如何使用 PHP DOM 从网页中提取关键字

Posted

技术标签:

【中文标题】如何使用 PHP DOM 从网页中提取关键字【英文标题】:How do I extract keyword from webpage using PHP DOM 【发布时间】:2015-09-06 08:59:57 【问题描述】:

这是我从网页中提取的相同代码...

        <div class="user-details-narrow">
            <div class="profileheadtitle">
                <span class=" headline txtBlue size15">
                    Profession
                </span>
            </div>
            <div class="profileheadcontent-narrow">
                <span class="txtGrey size15">
                    administration
                </span>
            </div>
        </div>

当显示在网页上时,它显示为“职业管理”。我想做的是提取专业,在这种情况下是“管理”。然而,它并不像看起来那么简单,因为这段代码对于各种其他问题重复了很多次,例如

        <div class="user-details-narrow">
            <div class="profileheadtitle">
                <span class=" headline txtBlue size15">
                    Industry
                </span>
            </div>
            <div class="profileheadcontent-narrow">
                <span class="txtGrey size15">
                    banking
                </span>
            </div>
        </div>

有什么好的解决方案吗?

【问题讨论】:

administration 的独特之处,我看不出和banking 有什么不同。 这两个领域都没有什么独特之处,这是我的问题。 是的,我可以看出这是个问题。在这种情况下,我想不出一种以编程方式识别正确方法的方法。 【参考方案1】:

请不要使用正则表达式从页面获取节点值。

php 有一个非常好的类,名为DOMDocument。您可以将页面作为 DOMDocument 获取:

$dom = new DOMDocument;
$dom->loadURL("http://test.de/page.html");
$finder = new DomXPath($doc);
$spaner = $finder->query("//*[contains(@class, 'size15')]");
echo $spaner->item(0)->nodeValue . "/" . $spaner->item(1)->nodeValue;

【讨论】:

使用 PHP 的 DOM 我仍然无法弄清楚如何正确解析 HTML。正如上面 Chris 所说,Professional 和 Industry 之间的代码没有区别,而且还有很多其他代码。如何分别拉出它们?

以上是关于如何使用 PHP DOM 从网页中提取关键字的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 php 从 HTML 表中提取数据

如何使报告生成更快?(从 sql 数据库中提取数据)

如何从网页的不同超链接中提取数据

如何获取网页的url

如何使用 PHP Dom 提取 innerHTML [重复]

使用 PHP Regex 或 DOM,如何在标签之间使用 eol 或换行符获取网页的 <TITLE>?</TITLE>?