首頁  >  文章  >  php教程  >  原创php采集器 v1.02

原创php采集器 v1.02

WBOY
WBOY原創
2016-06-06 19:37:331208瀏覽

用于网站采集,使用简单:支持分页采集、图片下载、过滤等,说明不多,仅限于php的二次开发,之前的代码片段先删除,请直接下载附件,如需要采集服务可联系我 PHP ?php/** * 抓取器 * @author Administrator * @example $config = array( * 'host'='服务器地

用于网站采集,使用简单:支持分页采集、图片下载、过滤等,说明不多,仅限于php的二次开发,之前的代码片段先删除,请直接下载附件,如需要采集服务可联系我
PHP
<?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);

?>
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn