利用PHP和正则表达式实现简单的采集功能

利用PHP和正则表达式实现简单的采集功能

我简单的实现了下采集优酷的电影地址,图片,电影名称,等用了file_get_contents这个函数,当然也可以用另外一个扩展curl来实现.

//读取需要采集的地址页面;

$start_url = “http://list.youku.com/category/show/c_96_u_1_s_1_d_1_p_1.html?spm=a2h1n.8251845.filterPanel.5!5~1~3!2~A”;
$source = file_get_contents($start_url);//读取页面;

//只取需要的部分,顶部和底部去除,只留有用的部分,在进行处理!!!

$series_start = strpos($source, ‘box-series’);
$series_end = strpos($source, ‘yk-pager’);
$series_contents = substr($source, $series_start, $series_end-$series_start);

将剩余的html部分,用正则进行,取出需要的部分

//获取视频地址,
preg_match_all(“/<a href=\”(.*?)\” title=\”(.*?)\” target=\”_blank\”><\/a>/”,$series_contents ,$str_url);

//获取图片地址
preg_match_all(“/<img class=\”quic\” _src=\”(.*?)\” src=\”(.*?)\” alt=\”(.*?)\”/”,$series_contents ,$str_img);

 

//获取视频名字
preg_match_all(“/target=\”_blank\”>(.*?)<\/a>/”,$series_contents ,$str_dai_name);
$arr_chu=array_unique($str_dai_name[0]);//处理字符串
array_shift($arr_chu);//处理字符串

 

//获取播放量
preg_match_all(“/<li>(.*?)<\/li>/”,$series_contents ,$str_counts);

 

处理采集到的东西并且输出!!

echo str_replace(“target=\”_blank\”>”,””,$arr_chu[$i]).’—‘. strip_tags($str_counts[0][$i]).’—‘. str_replace(“//”,”http://”,$str_url[1][$i]).’—‘. $str_img[1][$i]’;

 

只取了图片地址,视频地址,视频名字和播放量!!!想采集其他信息,可用采集到的信息进行深度采集,也可以直接放到数据库里!!用curl扩展同样可以实现!!!

 

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据