Php图文采集的基本原理和代码实例

原理:
1.以字符串形式得到某网页。
2.在字符串中截取想要的内容。
3.对截取到的内容进行相应的处理。本例程中主要对截取内容中的图片进行本地话处理 。

PHP代码
  1. //本程序为初学者入门,你可以随意更改使用  
  2. //如有问题或有什么改进和优化,还望与我分享 QQ:297535861  
  3. //与你一块进步。  
  4. //2007-12-26  
  5. function str_substr($str ,$statr$end) { //字符串截取函数  
  6.   $x = strpos($str$statr);  
  7.   return substr($str,  $x+strlen($start), strpos($str$end)-$x+strlen($end));    
  8. }  
  9. //////////////////////////////////////////////////  
  10. $url="http://www.XXXXXXX.XXX/XXX";//给据采集内容自己定,这句上传后给自动加了连接,请去掉  
  11. $str=file_get_contents($url); ///file_get_contents -- 将整个文件读入一个字符串  
  12. $start='#######';//截取内容前的html  最后网页中唯一  
  13. $end='########';//截取内容后的html 最后网页中唯一  
  14. $content=str_substr($str , $start$end);  
  15. //echo $content; //测试采集到的内容  
  16. echo '<hr>';  
  17. ///////////////////////////////////////////////////  
  18. $img_array = array();   
  19. $content1 = stripslashes($content); //stripslashes函数作用是去掉字符串中的转义字符\  
  20. if (get_magic_quotes_gpc()) $content1 = stripslashes($content1);   
  21. //echo $content1;//文章内容嘿嘿开始处理了   
  22. preg_match_all("/(src|SRC)=\"(http:\/\/(.+)\/(.+).(gif|jpg|jpeg|bmp|png))/isU",$content1,$img_array,PREG_PATTERN_ORDER);//正则开始匹配所有的图片并放入数组$img_array中 ,=匹配规则可根据具体情况改写,这个通用性不强,还望那位高手给个通吃的匹配=  
  23. $img_array = array_unique($img_array[2]); //array_unique -- 移除数组中重复的值,$img_array[2]到现在没有高清楚,猜想可能是取出二维数组中的某组。  
  24. //print_r($img_array); //测试匹配到的内容  
  25. set_time_limit(0); //限定最大执行时间  
  26.   
  27. //开始保存匹配内容中图片,修改名称并保存的本地文件夹中  
  28. foreach ($img_array as $key => $value) { //使用循环语句把匹配到的数组内容(图片)进行一一处理  
  29. if(file_get_contents($value)) $get_file = file_get_contents($value);//开始获取图片了哦 使用file_get_contents得到文件  
  30. else dir("出错");  
  31. $filetime = time(); //得到时间戳  
  32. $filepath = "pic2/".date("Ym",$filetime)."/";//图片保存的路径目录   
  33. !is_dir($filepath) ? mkdir($filepath) : null;  //如果目录不存在,则创建目录,注意:要有相应的目录权限。  
  34. $filename = date("YmdHis",$filetime).rand(100,999).'.'.substr($value,-3,3); //生成文件名,rand(100,999)的作用是防止文件名重复  
  35. $fp = @fopen($filepath.$filename,"w"); //以写方式打开文件  
  36. @fwrite($fp,$get_file); //  
  37. fclose($fp);//完工,哈   
  38. $content1 = preg_replace("/".addcslashes($value,"/")."/isU""pic2/".date("Ym",$filetime)."/".$filename$content1);  //顺便替换一下文章里面的图片地址  
  39. echo $value.'=>'.'pic2/'.date('Ym',$filetime).'/'.$filename.'<br>';  //测试图片复制前后,路径是否正常。  
  40. }   
  41. echo '<hr>';  
  42. echo $content1//可把$content1存入数据库  


上一篇: PHP中使用curl取得HTTP状态码
下一篇: Php使用curl伪造百度蜘蛛抓取页面
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: php
相关日志:
评论: 0 | 引用: 0 | 查看次数: 2026
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭

 广告位

↑返回顶部↑