php 信息采集代码

<?php
// 设置脚本一直执行【PHP默认只能执行30秒】
/**
 * 注意:下载的速度可能会大于写硬盘速度,所以如果内存小,下载时间长可能会出现内存溢出的问题
 */
set_time_limit(0);
/**
 * 下载优酷所有动作片的图片,以电影的名称作为图片的名称
 */
// 生成一个curl对象
$curl = curl_init();
// 匹配电影所在DIV的正则
$re = '/<div class="yk-col3">.+<label>播放:/Us';
// 匹配img标签上的src和alt
$re1 = '/<img src="(.*)" alt="(.*)">/U';
// 从第2页开始循环一页一页的采集一直采集到25页
for($p=2; $p<=29; $p++)
{
	$url = "http://www.youku.com/v_olist/c_96_g__a__sg__mt__lg__q__s_1_r_0_u_0_pt_0_av_0_ag_0_sg__pr__h__d_1_p_$p.html";
	// 采集这个页面的HTML
	$html = get($url);
	/**** 使用正则从字符串中匹配到图片、标题、链接 ****/
	// 先把电影所在的DIV匹配出来:取出所有class="yk-col3"的div
	preg_match_all($re, $html, $movies);
	// 再循环每个DIV匹配出图片、标题、链接地址
	foreach ($movies[0] as $k => $v)
	{
		// 匹配img标签上的src和alt
		preg_match($re1, $v, $img);
		// 发请求图片到内存中
		$_imgData = get($img[1]);
		// 写到硬盘上的图片文件【下载】
		// 因为操作系统是GBK的,所以要把UTF8转成GBK
		file_put_contents('./youkuimg/'.mb_convert_encoding($img[2], 'gbk', 'utf-8').'.jpg', $_imgData);
	}
	// 休息3秒等图片写到硬盘之后再下载,避免内存溢出
	sleep(3);
}

/**
 * 发一个GET请求获取数据
 */
function get($url)
{
	global $curl;
	// 配置curl中的http协议->可配置的荐可以查PHP手册中的curl_
	curl_setopt($curl, CURLOPT_URL, $url);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
	curl_setopt($curl, CURLOPT_HEADER, FALSE);
	// 执行这个请求
	return curl_exec($curl);
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值