<?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);
}
php 信息采集代码
最新推荐文章于 2023-10-13 17:24:15 发布