A-A+

phpquery 采集示例 方法及例子demo

2015年05月09日 14:30 学习笔记 暂无评论 阅读 310 views 次

【注意:此文章为博主原创文章!转载需注意,请带原文链接,至少也要是txt格式!】

下面的是PHP的采集规则代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//为了能获取https://
$ch = curl_init();
$user_agent = "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)";
$header[]='Proxy-Connection: keep-alive';
$header[]='Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8';
$header[]='User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.76 Safari/537.36';
$header[]='Referer: '.$page;
//$header[]='Accept-Encoding: gzip, deflate, sdch';
$header[]='Accept-Language: zh-CN,zh;q=0.8';
curl_setopt($ch, CURLOPT_URL, $page);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 	//启用时会将服务器服务器返回的“Location:”放在header中递归的返回给服务器,使用CURLOPT_MAXREDIRS可以限定递归返回的数量。
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);	//伪装head头部
//curl_setopt($ch, CURLOPT_ENCODING, 'gzip');		//有些页面经过压缩,这里还原压缩
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);	//跳过证书检查
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);	// ~设为0表示不检查证书  ~设为1表示检查证书中是否有CN(common name)字段 ~设为2表示在1的基础上校验当前的域名是否与CN匹配
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  		//将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
//curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);		//伪装USERAGENT  可以伪装成蜘蛛
$this->html = curl_exec($ch);
curl_close($ch);

赶集的采集规则demo

1
2
3
4
5
6
7
8
9
10
$url = "http://nb.ganji.com/che/s/_A6/";
$url = file_get_contents($url); */
$reg = array("title"=>array(".ml-10 div a:parent","text"));
$rang = ".list-sty1-bg";
//使用curl抓取源码并以GBK编码格式输出
$hj = QueryList::Query($url,$reg,$rang,'curl','UTF-8');
$arr = $hj->jsonArr;
echo "<-pre->";
print_r($arr);
echo "<-/pre-><hr/>以上是赶集的采集规则<hr/>";

游迅网yxdown的采集规则demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//采OSC内容页内容
$url = "http://www.yxdown.com/";
//$url = "http://caigou.makepolo.com/spc_new.php?search_flag=0&q=小米辣";
$url = file_get_contents($url);
$url = iconv('GBK','UTF-8//IGNORE', $url);
//mb_convert_encoding($url, "utf-8", "gbk"); 
preg_match_all("|<div id=\"jd_middle\">(.*)<div id=\"jd_right\">|isU",$url,$gl); //此处主要取某一处固定的部分
$reg = array("title"=>array("ul a","html","","callfun1"));
$rang = ".ifo_con1";
//使用curl抓取源码并以GBK编码格式输出
$hj = QueryList::Query($gl[1][0],$reg);
$arr = $hj->jsonArr;
echo "<-pre->";
print_r($arr);
echo "<-/pre-><hr/>";

上面的回调函数代码

1
2
3
4
5
6
7
8
9
10
function callfun1($content,$key)
{
	$pattern='/<img\s+src=[\\\'| \\\"](.*?(?:[\.gif|\.jpg]))[\\\'|\\\"].*?[\/]?>/';
	$str="";
	$con=preg_replace($pattern,$str,$content);
	if(empty($con)){
		$con = "-提示:利用回调函数判断这里是图片img,可以利用回调函数过滤。- $content";
	}
    return $con;     // return '回调函数1:'.$key.'-'.$content;  key 表示-选择器名称    content-对应内容
}

温馨提示: 此处内容需要评论本文后才能查看.

标签:

给我留言