php 正则表达式抓取网页内容

php中文网
发布: 2016-06-23 14:21:33
原创
1621人浏览过

php 抓取网页内容优化

   我想在youku网抓取高清视频的链接,然后发到手机客户端那里,可是抓取的时间不理想(大概50个视频,电脑抓取显示在网页都要6秒多,发送到手机更要30秒),想问有什么优化方法呢?

回复讨论(解决方案)

换光纤    !

楼主是要抓链接吧,不是抓视频内容吧,用CURL

楼主是要抓链接吧,不是抓视频内容吧,用CURL
我现在用的是正则表达式抓取标签,时间太长了,你是说可以用curl来做?
有没有具体的思路

你可以把你的代码贴出来,看有没有可优化的地方。

你可以把你的代码贴出来,看有没有可优化的地方。

<?php$url="http://m.youku.com/wap/";//$reg1="/^<a\s*href=\"(.*?)version=2\">$/i";$reg1="/<a\s*href=\"(.*?)version=2\"(.*?)>(.*?)<\/a>/i";//获取视频链接$reg2="/<img ([^ alt="php 正则表达式抓取网页内容" >]*)\s*class=\"imgdetail\"\s*src=('|\")([^'\"]+)('|\")/i";$reg3="<a\s*href=\"(.*?)&format=3gphd\"\s*id=\"click_play\"\s*>";$reg4= "/<p\s*class=\"videotitle\".*?>.*?<\/p>/i";//获取视频标题$content=file_get_contents($url);preg_match_all($reg1, $content,$matches);$video=$matches[0];//首页视频的链接$resultArray=array();//装载所有数据的数组//$subArray=array();//子数组foreach ($video as $key){		//处理url,得到视频的点击网址	$position=strpos($key, "href");	$substring=substr($key, $position+11);	$pos=strpos($substring, ">");	$link=substr($substring, 0,$pos-1);	$nextUrl=$url.$link;	$nextContent=file_get_contents($nextUrl);	//获取视频图片	preg_match_all($reg2, $nextContent,$img);	$img_arr=$img[0];	foreach ($img_arr as $arr)	{		$position=strpos($arr, "src");		$sub=substr($arr, $position+5);		$last=substr($sub, 0,$pos);	}		//获取视频高清点播地址	preg_match_all($reg3, $nextContent,$vids);	$video_arr=$vids[0];	$vid=$video_arr[0];	$position=strpos($vid, "href");	$v_string=substr($vid, $position+11);	$pos=strpos($v_string, "\"");	$add=substr($v_string, 0,$pos);	$video_url=$url.$add;	//获取视频的标题	preg_match_all($reg4, $nextContent,$match);	$title=$match[0];	$r=serialize($title);	$position=mb_strpos($r, "</p>");	$sub=substr($r, 0,$position);	$pos=mb_strrpos($sub, ">");	$til=substr($sub, $pos+1);	$subArray=array('image'=>$last,'video'=>$video_url,'title'=>$til);	array_push($resultArray, $subArray);}$resultJson=json_encode($resultArray);file_put_contents('web.txt', print_r($resultJson,true));
登录后复制

以上就是全部代码了..

foreach ($video as $key)
{
    $nextContent=file_get_contents($nextUrl);
    ...

我说换光纤吧,循环地 file_get_contents,6秒很便宜了

foreach ($video as $key)
{
    $nextContent=file_get_contents($nextUrl);
    ...

我说换光纤吧,循环地 file_get_contents,6秒很便宜了
?丝换不起

用curl_multi_exec()并发抓取

用curl_multi_exec()并发抓取
虽然还没弄好,但是大神提供了思路,也提供我学习的方向!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号