我“尝试”凑一个网页,拥有页面中的以下结构:如何使用CURL从页面解析实际的HTML?
<p class="row">
<span>stuff here</span>
<a href="http://www.host.tld/file.html">Descriptive Link Text</a>
<div>Link Description Here</div>
</p>
我使用卷曲刮网页:
<?php
$handle = curl_init();
curl_setopt($handle, CURLOPT_URL, "http://www.host.tld/");
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
$html = curl_exec($handle);
curl_close($handle);
?>
我已经做了一些研究,发现我不应该使用RegEx来解析从curl返回的HTML,并且我应该使用PHP DOM。这就是我这样做:
现在我不会假装我完全明白这一点,但我得到的要点,和我得到我想要的章节。唯一的问题是,我得到的仅仅是HTML页面的文本,就好像我将它从浏览器窗口中复制出来一样。我要的是实际HTML,因为我想提取的链接,并使用它们太像这样:
for($i=0; $i<$nodeNo; $i++){
$printString = $sections->item($i)->nodeValue;
echo "<a href=\"<extracted link>\">LINK</a> " . $printString . "<br>";
}
正如你所看到的,我不能得到的链接,因为我只得到的的文本网页,而不是源,就像我想要的。我知道“curl_exec”是拉HTML,因为我已经试过了,所以我相信DOM以某种方式剥离了我想要的HTML。
您也可以使用'foreach'代替'for'循环遍历节点。这将使它更加紧凑和易于理解,因为你实际上(似乎)不需要任何指标。 – janmoesen 2010-08-05 06:04:51