simple_html_dom抓取程序
来源:互联网 发布:cmm 软件开发过程 编辑:程序博客网 时间:2024/05/18 00:38
下载 simple_html_dom.php 文件
cj.class.php 扩展类,基于simple_html
<?php/*** 页面抓取方法、 基于simple_html功能实现 */class FetchHtml{ public $html = ''; #存放html页面内容 public $url = ''; #要抓取的页面的url /** * 构造函数 初始化 网址 和 获取网址内容 */ public function __construct($url = '') { $this->url = $url; $this->html = $this->getHtml($url); } /** * 获取整个页面内容 */ public function getHtml() { if($this->url) { return file_get_html($this->url); } } /** * 获取网页部分的内容 * @param $paramArr 参数:如下参数详情 * array( * 'node'=>array( * 'element' => '', #节点元素名称 可以是id、class * 'index' => '0', #节点索引位置 0第一个 1第二个...依次类推 * ) * ) * @return html */ public function getNodeHtml($paramArr) { $options = array( 'node' => array( 'element' => '', #节点元素名称 可以是id、class 'index' => '0', #节点索引位置 0第一个 1第二个...依次类推 ) ); if(is_array($paramArr)) { $options = array_merge($options, $paramArr); } extract($options); if($this->html == '') {$this->html = $this->getHtml($this -> url);if(!$this->html){return false;} } return $this->html->find($node['element'],$node['index']); } /** * 获取指定区域的内容 * @param $paramArr 参数:如下参数详情 * 'node'=>array( * 'element' => '', #节点元素名称 可以是id(如:div#nav) 、class(如:div.nav) * 'index' => '0', #节点索引位置 0第一个 1第二个...依次类推 * ), * 'items'=>array( * #键名 * 'name'=>array( * 'index' => 'all', #子节点索引位置 all表示匹配所有,也可以是数字 0第一个 1第二个...依次类推 * 'element' => 'li>a', #查找的节点元素 多个用> 目前就支持2级 支持元素class(如:div.nav)和元素id(如:div#nav) * 还可以连贯 div#nav>li * 'attr' => 'href' #获取元素属性,留空或不设置将获取 element元素的内容 * ), * //键名可以有多个 * 'linkurl'=>array( * 'index' => '0', * 'element' => 'ul#nav>li', * 'attr' => 'href' * ), * ) * ) * @param $simple_html 针对区域内容再次进行抓取 默认为空 * @return html */ public function getNodeAttribute($paramArr, $simple_html = '') { $options = array('items'=>array()); if(!isset($paramArr['items']) || empty($paramArr['items'])) { return $this->getNodeHtml($this->$paramArr); } if(is_array($paramArr)) { $options = array_merge($options, $paramArr); } if($simple_html) { $html = $simple_html; } else { $html = $this->getNodeHtml($options);if(!$html) return false; } $data = array(); foreach($paramArr['items'] as $k=>$item) { $nodes = explode('>',$item['element']); $len = count($nodes); if($item['index']=='all') { if($len == 1) { foreach($html->find($nodes[0]) as $element) { if(isset($item['attr']) && $item['attr']) { $data[$k][] = $element->$item['attr']; } else { $data[$k][] = $element->innertext; } } } elseif($len == 2) { foreach($html->find($nodes[0]) as $element) { if(isset($item['attr']) && $item['attr']) { $data[$k][] = $element->find($nodes[1],0)->$item['attr']; } else { $data[$k][] = $element->find($nodes[1],0)->innertext; } } } } else { if($len == 1) { if(isset($item['attr']) && $item['attr']) { $data[$k] = $html->find($nodes[0],$item['index'])->$item['attr']; } else { $data[$k] = $html->find($nodes[0],$item['index'])->innertext; } } elseif($len == 2) { if(isset($item['attr']) && $item['attr']) { $data[$k] = $html->find($nodes[0],$item['index'])->find($nodes[1],0)->$item['attr']; } else { $data[$k] = $html->find($nodes[0],$item['index'])->find($nodes[1],0)->innertext; } } } } unset($html); return $data; } /*析构函数*/ public function __destruct() { unset($this->html); }}
baidu_sprider.php
<?phpheader("Content-type:text/html; charset=utf-8");set_time_limit(0);require 'simple_html_dom.php';require 'cj.class.php'; //引入采集扩展文件$showsize = 40; //百度每页显示多少条记录$pagesize = 0; //当前页条数$sql = "select product_name, from z_product_bijia";$result = '';$keyword = '安娜苏蝶之恋香水';$baidu_url = 'http://www.baidu.com/s?wd=site%3Aetao.com%20'.$keyword.'&pn='.$pagesize.'&rn='.$showsize.'&ie=utf-8';$baidu_params = array( 'node'=>array( 'element'=>'div#content_left', 'index' => '0', ), 'items' => array( 'virtual_url' => array( 'index' => 'all', 'element' => 'div.f13>span', //'attr' => 'src', ), 'jump_url' => array( 'index' => 'all', 'element' => 'h3.t>a', 'attr' => 'href', ), ) );$baidu = new FetchHtml($baidu_url);//$html = $baidu->getNodeHtml($baidu_params);$attr = $baidu->getNodeAttribute($baidu_params);$temp_url = '';if(!empty($attr['virtual_url']) && !empty($attr['jump_url'])) { foreach($attr['virtual_url'] as $k=>$url) { if(preg_match('#s\.etao\.com\/item/#iu',$url)) { $temp_url = $attr['jump_url'][$k]; } }}}
0 0
- simple_html_dom抓取程序
- php用simple_html_dom抓取网页 Segmentation fault
- php 数据抓取curl+simple_html_dom总结
- php抓取页面simple_html_dom的使用教程
- 从网页上抓取内容的库simple_html_dom
- 抓取微博热词,使用simple_html_dom来操作html数据
- 抓取程序
- PHP抓取程序
- meike新闻抓取程序
- simple_html_dom使用小结
- simple_html_dom使用小结
- simple_html_dom使用小结
- simple_html_dom使用小结
- simple_html_dom使用小结
- php simple_html_dom html 解析
- php simple_html_dom网页采集
- simple_html_dom(入门实例)
- Ajax网页源码抓取程序
- pyQt画漂亮GUI界面【1】
- [LeetCode] Interleaving String
- Spark Streaming实时计算框架介绍
- STL的vector容器基本操作
- 安装node.js,Node,npm
- simple_html_dom抓取程序
- rsync 同步推送详细配置
- CentOS5.5环境下布署LVS+keepalived
- Centos 5.5安装教程(图文)
- CentOS安装svn服务
- Centos 配置apache多站点
- 15道使用频率极高的基础算法题
- CentOS 6.3下FTP安装及配置
- 你是我的小丫小苹果