分享一个使用PHP对HTML进行DOM操作的类,支持CSS选择器
本帖最后由 lovewqww 于 2010-1-20 01:45 编辑如果你想抓取别人网页上面的内容,但是你又不会正则,那么只要你有一点点的CSS功底,那么就可以通过我发布的类很方便的抓取网页中的任何一块内容。
下面是一个整合到CI中的源码:
在使用下面的例子以前请先将“simple_html_dom.php”放到system/application/libraries文件夹中
<?php
class htmldom extends Controller {
function htmldom() {
parent::Controller();
}
function example() {
$this->load->library('simple_html_dom', 'htmlDom');
$dom = file_get_dom('http://www.995114.com');
/**
* 抓取页面中的公告
*/
$element = $dom->getElementById('#gonggao_content li', 0);//如果没有第二个参数,那么返回的是一个elements的数组
$content = $element->innertext; //innertext类似于DHTML中的innerHTML
echo '<h3>网站公告</h3>';
echo '<div style="border:1px solid red">'.$content.'</div>';
/**
* 抓取页面中的导航
*/
$elements = $dom->find('#answer_nav li a');
$navigations_text = array(); //保存导航中的文本
$navigations_href = array(); //保存每个导航的链接地址
foreach ($elements as $element) {
$navigations_text[] = $element->plaintext;//plaintext类似于DHTML中的innertext
$navigations_href[] = $element->getAttribute('href');
}
echo '<h3>导航的文本</h3>';
echo '<div style="border:1px solid red; padding:16px 0 20px 30px">'.join('', $navigations_text).'</div>';
echo '<h3>导航的链接</h3>';
echo '<div style="border:1px solid red; padding:16px 0 20px30px">'.join('<br />', $navigations_href).'</div>';
}
}
?>
注:simple_html_dom.php中的类不是本人原创,我也是在网上面找到的! 这个对于设计结构良好的有用,对于胡乱写代码的人,比如好几个DOM元素用同一个ID或者CLASS的或许无用了! 谢谢分享 这个不错,分享
页:
[1]