php采集alexa(包含图片采集下载)程序代码

曾经我有学习过asp版采集程序的编写,见:ASP获取网站alexa排名的源码,asp采集源码主要用到了MSXML2.XMLHTTP获取页面内容,php实现起来更加简单一点,只要用一个php5自带的函数file_get_contents就行。网上有朋友总结了php采集及图片下载的程序,见:php 图文采集的基本原理和代码实例(俗称小偷程序),我这里提取一些要点做下记录。

提取了采集部分的代码:

‘;//截取内容前的html 最后网页中唯一
$end=’‘;//截取内容后的html 最后网页中唯一
$content=str_substr($str , $start, $end);
echo $content; //测试采集到的内容
echo ‘


‘;
?>

下载资源部分的代码,因为我暂时用不着,所以也没细看。想要学习的朋友可以看下面完整代码:


‘;
///////////////////////////////////////////////////
$img_array = array();
$content1 = stripslashes($content); //stripslashes函数作用是去掉字符串中的转义字符\

if (get_magic_quotes_gpc()) $content1 = stripslashes($content1);

//echo $content1;//文章内容嘿嘿开始处理了
preg_match_all(“/(src|SRC)=\”(http:\/\/(.+)\/(.+).(gif|jpg|jpeg|bmp|png))/isU”,$content1,$img_array,PREG_PATTERN_ORDER);//正则开始匹配所有的图片并放入数组$img_array中 ,=匹配规则可根据具体情况改写,这个通用性不强,还望那位高手给个通吃的匹配=
$img_array = array_unique($img_array[2]); //array_unique — 移除数组中重复的值,$img_array[2]到现在没有高清楚,猜想可能是取出二维数组中的某组。
//print_r($img_array); //测试匹配到的内容
set_time_limit(0); //限定最大执行时间

//开始保存匹配内容中图片,修改名称并保存的本地文件夹中
foreach ($img_array as $key => $value) { //使用循环语句把匹配到的数组内容(图片)进行一一处理
if(file_get_contents($value)) $get_file = file_get_contents($value);//开始获取图片了哦 使用file_get_contents得到文件
else dir(“出错”);
$filetime = time(); //得到时间戳
$filepath = “pic2/”.date(“Ym”,$filetime).”/”;//图片保存的路径目录
!is_dir($filepath) ? mkdir($filepath) : null; //如果目录不存在,则创建目录,注意:要有相应的目录权限。
$filename = date(“YmdHis”,$filetime).rand(100,999).’.’.substr($value,-3,3); //生成文件名,rand(100,999)的作用是防止文件名重复
$fp = @fopen($filepath.$filename,”w”); //以写方式打开文件
@fwrite($fp,$get_file); //
fclose($fp);//完工,哈
$content1 = preg_replace(“/”.addcslashes($value,”/”).”/isU”, “pic2/”.date(“Ym”,$filetime).”/”.$filename, $content1); //顺便替换一下文章里面的图片地址
echo $value1.’=>’.'pic2/’.date(‘Ym’,$filetime).’/’.$filename.’
‘; //测试图片复制前后,路径是否正常。
}
echo ‘


‘;
echo $content1; //可把$content1存入数据库
?>

Tags: , ,

One Comment

Leave a Comment