PHP使用标签抓取HTML页面内容

时间:2012-02-07 16:37:57

标签: php html scrape

原始网页的代码

<html>
<div class="clear"></div>
<div class="slider">
<ul>  
<li>
<a title="title1" href="http://www.link.com" >
<img  title="title1"  alt=""  src="http://www.link.com/1.jpg"  /></a>
</li>
<li>
<a title="title2" href="http://www.link.com" >
<img  title="title2"  alt=""  src="http://www.link.com/2.jpg"  /></a>
</li>
</ul>
</div>
<div class="clear"></div>
</html>

我想提取下面的详细信息(带标签)

<div class="slider">
<ul>  
<li>
<a title="title1" href="http://www.link.com" >
<img  title="title1"  alt=""  src="http://www.link.com/1.jpg"  /></a>
</li>
<li>
<a title="title2" href="http://www.link.com" >
<img  title="title2"  alt=""  src="http://www.link.com/2.jpg"  /></a>
</li>
</ul>
</div>

之前检查了很多问题,但我找不到类似的东西,所以请有人帮我解决这个问题。

由于

2 个答案:

答案 0 :(得分:3)

要正确删除它们,您需要PHP的DOMDOcument扩展程序的DOMDocument::loadHTML()DOMDocument::getElementsByTagName()DomNode::attributes()DOMNode::getNamedItem()个函数。

答案 1 :(得分:2)

要操纵HTML,最好不要使用像preg_replace这样的正则表达式。为什么?见this question。您可以使用phpQuery作为HTML解析器。

使用以下命令安装它(您需要使用pear):

pear channel-discover phpquery-pear.appspot.com  
pear install phpquery/phpQuery 

安装完成后,您可以执行以下操作:

<?php
$html = file_get_contents("http://www.your-url.com/");
$pq = phpQuery::newDocumentHTML($html);
echo $pq['.slider']; // Output the contents of tags with class="slider"

有关更多示例代码和文档,请参阅 phpQuery web page

修改

如果您想使用其他HTML解析解决方案,可以查看How do you parse and process HTML/XML in PHP?