之前一直使用phpcms自带的采集功能,只需要写下采集规则即可,现在需求改变,需要一些自定义的东西,需要整合到thinkphp里面,所以从头开始搞这个,花了点时间,参考了下网上的教程,php代码
<?php function SaveImg($url){ $imgurl = file_get_contents($url); $start = strpos($imgurl, "<div class=\"con-desc\">"); $end = strpos( $imgurl, "<div class=\"mt14 conWrapAd\">"); $length = $end - $start; $item = substr($imgurl, $start, $length); $reg_tag = '/<img.*?\"([^\"]*(jpg|bmp|jpeg|gif)).*?>/'; preg_match_all($reg_tag, $item, $imgurl); $img = $imgurl[1][0]; return $img; } function GrabImage($url, $filename = "") { if ($url == ""){ return false; } if ($filename == "") { //如果没有指定新的文件名 $ext = strrchr($url, "."); //得到$url的图片格式 if ($ext != ".gif" && $ext != ".jpg"){ return false; }else{ $filename = date("Ymdhis").$ext; } } ob_start();//打开输出 readfile($url);//输出图片文件 $img = ob_get_contents();//得到浏览器输出 ob_end_clean();//清除输出并关闭 $size = strlen($img);//得到图片大小 $fp2 = @fopen("img/".$filename, "a"); fwrite($fp2, $img);//向当前目录写入图片文件,并重新命名 fclose($fp2); return $filename;//返回新的文件名 } if($_POST['sub']){ foreach ($_POST['url'] as $k => $v) { $img = GrabImage(SaveImg($v), ""); if($img){ echo "采集成功,图片已保存,文件名字为".$img."<br />"; }else{ echo "采集失败!<br />"; } sleep(1); } } ?>
html代码
<div class="list"> <form action="" method="post"> <input type="text" name="pagenum" id="pagenum" value="" /> <input type="button" name="generate" id="generate" value="生成列表" /> <input type="submit" name="sub" id="btn" value="下载远程图片" /><br /> <input type="text" name="url[]" id="url" value="" /> </form> </div>
js代码
<script type="text/javascript" src="jquery.min.js"></script> <script type="text/javascript"> $(function(){ $("#generate").click(function(){ var num = $("#pagenum").val(); var arr = $("#url").val().split(".html"); for (var i = 2; i <= num; i++) { $("#url").before('<input type="text" name="url[]" id="url" value="'+ arr[0] + '_'+ i +'.html" /><br />'); } }); }) </script>
简单样式表
*{padding:0;border:0;margin:0;} html body{font-size:12px;color:#999;} a,a:hover{text-decoration:none;} .list{padding:5px;overflow:hidden;} input{width:400px;height:30px;padding-left:5px;line-height:30px;border:1px solid #ddd;margin:5px;border-radius:5px;} #pagenum,#generate,#btn{width:120px;}
一个简单的表单提交网站页面地址,从页面抓取图片然后保存到本地!