用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4898|回复: 3
收起左侧

[库 Library] 分享一个使用PHP对HTML进行DOM操作的类,支持CSS选择器

[复制链接]
发表于 2010-1-19 11:29:36 | 显示全部楼层 |阅读模式
本帖最后由 lovewqww 于 2010-1-20 01:45 编辑

如果你想抓取别人网页上面的内容,但是你又不会正则,那么只要你有一点点的CSS功底,那么就可以通过我发布的类很方便的抓取网页中的任何一块内容。

simplehtmldom.rar (39.99 KB, 下载次数: 49)

下面是一个整合到CI中的源码:
在使用下面的例子以前请先将“simple_html_dom.php”放到system/application/libraries文件夹中

PHP复制代码
<?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中的类不是本人原创,我也是在网上面找到的!

评分

参与人数 1威望 +5 收起 理由
Hex + 5 我很赞同

查看全部评分

发表于 2010-4-12 23:08:40 | 显示全部楼层
这个对于设计结构良好的有用,对于胡乱写代码的人,比如好几个DOM元素用同一个ID或者CLASS的或许无用了!
发表于 2010-4-13 09:03:36 | 显示全部楼层
谢谢分享
发表于 2010-5-27 20:31:44 | 显示全部楼层
这个不错,分享

本版积分规则