lovewqww 发表于 2010-1-19 11:29:36

分享一个使用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中的类不是本人原创,我也是在网上面找到的!

snllll 发表于 2010-4-12 23:08:40

这个对于设计结构良好的有用,对于胡乱写代码的人,比如好几个DOM元素用同一个ID或者CLASS的或许无用了!

xiaoniao 发表于 2010-4-13 09:03:36

谢谢分享

songah 发表于 2010-5-27 20:31:44

这个不错,分享
页: [1]
查看完整版本: 分享一个使用PHP对HTML进行DOM操作的类,支持CSS选择器