如何使用 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 Dom 提取 innerHTML [重复]
使用 PHP Regex 或 DOM,如何在标签之间使用 eol 或换行符获取网页的 <TITLE>?</TITLE>?