【发布时间】:2011-06-26 04:12:51
【问题描述】:
我刚刚开始阅读有关 DOM 的文档和示例,以便抓取和解析文档。
例如,我有部分文档如下所示:
<div id="showContent">
<table>
<tr>
<td>
Crap
</td>
</tr>
<tr>
<td width="172" valign="top"><a href="link"><img height="91" border="0" width="172" class="" src="img"></a></td>
<td width="10"> </td>
<td valign="top"><table cellspacing="0" cellpadding="0" border="0">
<tbody><tr>
<td height="30"><a class="px11" href="link">title</a><a><br>
<span class="px10"></span>
</a></td>
</tr>
<tr>
<td><img height="1" width="580" src="crap"></td>
</tr>
<tr>
<td align="right">
<a href="link"><img height="16" border="0" width="65" src="/buy"></a>
</td>
</tr>
<tr>
<td valign="top" class="px10">
<p style="width: 500px;">description.</p>
</td>
</tr>
</tbody></table></td>
</tr>
<tr>
<td>
Crap
</td>
</tr>
<tr>
<td>
Crap
</td>
</tr>
</table>
</div>
我正在尝试使用以下代码获取所有tr标签并分析其中是否有废话或信息:
$dom = new DOMDocument();
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$tags = $xpath->query('.//div[@id="showContent"]');
foreach ($tags as $tag) {
$string="";
$string=trim($tag->nodeValue);
if(strlen($string)>3) {
echo $string;
echo '<br>';
}
}
但是我得到的只是没有标签的剥离字符串,例如:
Crap
Crap
Title
Description
但我想得到:
<tr>
<td>Crap</td>
</tr>
<tr>
<a href="link">title</a>
</tr>
如何保留html节点(标签)?
【问题讨论】:
-
您的 XPath 与 div 匹配。要获得您显示的 HTML,您必须使用不同的 XPath 查询/查询,然后将结果传递给
echo $dom->save($node)。请说明你想要得到什么。 -
@netcoder innerHTML 这里根本不需要。
-
@netcoder 谢谢你的链接
-
@Gordon,我正在尝试获取一个页面的信息并将其显示在另一个页面中,但是该页面在表格中列出了很多信息,有些是相关的,有些不是,我有我想要的图片、标题和描述,然后是我不关心的样式、数字,但我想获取 div 内的 html 以分析数据的相关性,我的代码得到所有字符串和我不知道它是 td、原始 td 中的 div 还是其他东西(所有信息都在那个大 div 中)
标签: php xml-parsing html-parsing domdocument