用于网站采集,使用简单:支持分页采集、图片下载、过滤等,说明不多,仅限于php的二次开发,之前的代码片段先删除,请直接下载附件,如需要采集服务可联系我 1. [文件] demo.php
1. [文件] demo.php ~ 3KB 下载(40)
<?php /** * 抓取器 * @author Administrator * @example $config = array( * 'host'=>'服务器地址', * 'list'=>array( * 'items'=>array(正则表达式组), * 'page_url'=>'分页地址正则表达式,$1为链接,$2显示的数字', * 'page_size'=>'分页大小', * 'page_url_rule'=>'获取页码数的正则,$1必为数字', * 'page_limit'=>数字,要扫描的最大页数,如果不填,则只扫描可视范的页码数 * 'this_detail_callback'=>'对详情页的数据执行回调函数', * 'list_detail_url'=>'指定list中的items中名称为详情页的地址' * ) * * details=>array( * 详情页的所有规则,见items结构说明 * ), * * time_limit=>array('rule'=>对应的组名,start=>超始时间,end=>结束时间), * num_limit=>获取多少条数据 * ) * * items结构解析: array( * '属性名称'=>array('rule'=>正则表达式,多种情况时为数组,type=>' 1-文本,2-远程请求,3->'子规则列表items',4=>'子config配置', * replace=>替换结果,以回调函数形式或采用数组array(from=>'正则表达式','to'=>替换字符),'multi'=>是否采集多条数据), * ) */ set_time_limit(0); define('IN_WEB',true); date_default_timezone_set('PRC'); include('collector/init.php'); $htmlFilter = '/<link[^>]*\/>|((onclick|onmouseover|onmouseout|onblur)=\"[^\"]+\")|<!--(.+?)-->|<div[^>]*>|<\/div>|<style[^>]*>(.+?)<\/style>|<embed[^>]*>(.+?)<\/emded>|<object[^>]*>(.+?)<\/object>|<script[^>]*>(.*?)<\/script>|<noscript[^>]*>(.+?)<\/noscript>|<a[^>]*>|<\/a>/is'; $config = array( 'host'=>'http://news.wto168.net/zixun/', 'list'=>array( 'items'=>array( 'time'=>array('rule'=>'/>.*([0-9]{4}-[0-9]{1,2}-[0-9]{1,2}\s*[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2})<\/li>/i','multi'=>true), 'link'=>array('rule'=>'/<a href=\"([^\"]+)\" class=\"title\">/i','multi'=>true, ), 'title'=>array('rule'=>'/<a href=\"[^\"]+\" class=\"title\">([^>]+)<\/a>/i','multi'=>true,'replace'=>array('from'=>'/【.+】/','to'=>'')), ), 'list_detail_url'=>'link', 'page_url'=>'/<option value=\'(list_56_(\d+)\.html)\'[^>]*>\d+<\/option>/i', 'page_url_rule'=>'/_(\d+)\.html/', 'page_limit'=>10, ), 'details'=>array( 'content'=>array('rule'=>'/<div id=\"wto168NewsContent\">(.+?)<div style=\"width:664px; padding-left:0px; padding-right:15px;\">/is', 'keep_html'=>true,'replace'=>array('from'=>$htmlFilter,'to'=>'')), ), 'list_url'=>'/^http:\/\/news\.wto168\.net\/zixun\/list/', 'detail_url'=>'/^http:\/\/news\.wto168\.net\/zixun\/.*\.html/i', 'time_limit'=>array('rule'=>'time','start'=>date('Y-m-d') ), ); $c = new collector($config); $url = 'http://news.wto168.net/zixun/list_56_1.html'; $res = $c->collect($url); print_r($res); ?>