A-A+

利用QueryList多线程插件批量下载太平洋电脑网壁纸,涉及到采集gzip页面,很容易被当作乱码

2016年01月27日 15:18 汪洋大海 暂无评论 阅读 333 views 次

PHP采集,演示QueryList3.0多线程插件使用技巧,多线程批量采集页面同时批量下载图片;以及采集gzip页面,gzip页面很容易被误以为是乱码,实际上是经过压缩过的页面,解压后即可看到原网页内容。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
require '/QueryList/QueryList.class.php';
$urls = array();
for ($i=1; $i <= 20; $i++) { 
	$url = "http://wallpaper.pconline.com.cn/pic/17970_{$i}.html";
	array_push($urls,$url);
}
QueryList::run('Multi',array(
		'list' => $urls,
		/*'curl' => array(
				CURLOPT_ENCODING => 'gzip'
			),*/
		'success' => function($a,$_this){
			$curl = $_this->curl;
			$reg = array(
				'img' => array('#J-BigPic>img','src','',function($content){
					//利用回调函数获取原图
					return str_replace('_320x480', '', $content);
				})
			);
			//注意这里,原页面经过了gzip压缩,需要解压缩,可能经常有人误以为是乱码
			$page = @gzdecode($a['content']);
			if(!$page){
				$page = $a['content'];
			}
			QueryList::Query($page,$reg)->getData(function($item) use($curl){
				$curl->add(array(
					'url' => $item['img'],
					 //指定图片下载目录
					'file' => 'images/'.md5($item['img']).'.jpg'
					));
			});
 
		}
));
标签:

给我留言