采集列表
1 <?php 2 require_once "./QueryList.php"; 3 require_once "./phpQuery.php"; 4 // 设定抓取的页数 5 $page = range(1, 3); 6 7 // 分页抓取数据 8 foreach ($page as $val) { 9 // 待采集的页面地址 10 $url = "https://news.ke.com/sh/baike/035/pg" . $val . '/'; 11 12 $data = @\QL\QueryList::Query($url, [ 13 // 文章标题 14 'title' => ['.text .LOGCLICK', 'text'], 15 'url' => ['.text .LOGCLICK', 'href'], 16 'pic' => ['.lj-lazy', 'data-original',"",function ($item) { 17 // 获取出图片的后缀名 18 $extension = pathinfo($item,PATHINFO_EXTENSION); 19 // 设定保存的路径(路径+文件名) 20 $save_path = dirname(__DIR__)."/public/uploads/article/"; 21 //设定保存时的 22 $save_name = md5(time()) . mt_rand(1,999999) . "." . $extension; 23 // 从网络中获取资源 24 $res = file_get_contents($item); 25 // 保存到本地 26 file_put_contents($save_path.$save_name,file_get_contents($item)); 27 // 返回新的路径 28 return "/uploads/article/".$save_name; 29 }], 30 // 文章摘要 31 'desc' => ['.summary', 'text'], 32 ])->data; 33 print_r($data); 34 // 入库 35 $pdo = new PDO("mysql:host=127.0.0.1;dbname=zfw","root","root"); 36 // 循环数据 37 foreach ($data as $v) { 38 // 写插入的SQL语句 39 $sql = 'insert into zfw_articles (`title`,`pic`,`url`,`desc`,`body`,`author`) values (?,?,?,?,"","")'; 40 // 预处理 41 $stmt = $pdo->prepare($sql); 42 // 插入 43 $stmt->execute([$v['title'],$v['pic'],$v['url'],$v['desc']]); 44 } 45 46 }
抓取内容
1 <?php 2 require_once "QueryList.php"; 3 require_once "phpQuery.php"; 4 5 // 使用PDO 6 $pdo = new PDO("mysql:host=127.0.0.1;dbname=zfw","root","root"); 7 // 查询 8 $sql = "select id,url from zfw_articles where body = ''"; 9 // 执行 10 $data = $pdo->query($sql)->fetchAll(); 11 // 循环执行抓取 12 foreach ($data as $val) { 13 $data = @\QL\QueryList::Query($val['url'], [ 14 // 文章内容 15 'body' => ['.article-detail', 'html'], 16 // 文章作者 17 'author' => ['.author','text'], 18 ])->data; 19 // 取出id 20 $id = $val['id']; 21 // 取出作者 22 $author = $data[0]['author']; 23 // 取出内容 24 $body = $data[0]['body']; 25 // 修改入库 26 $sql = "update zfw_articles set body =?,author =? where id=?"; 27 // 预处理 28 $stmt = $pdo->prepare($sql); 29 // 修改数据 30 $stmt->execute([$body,$author,$id]); 31 }
文件上传:
前端:
1 <!doctype html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" 6 content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> 7 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 8 <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script> 9 <link rel="stylesheet" type="text/css" href="http://cdn.datatables.net/1.10.21/css/jquery.dataTables.css"> 10 <script type="text/javascript" charset="utf8" src="http://cdn.datatables.net/1.10.21/js/jquery.dataTables.js"></script> 11 <title>Document</title> 12 </head> 13 <body> 14 <form action="save" method="post" enctype="multipart/form-data"> 15 @csrf 16 姓名<input type="text" name="name"> 17 <br> 18 用户名<input type="text" name="username"> 19 <br> 20 密码<input type="password" name="password"> 21 <br> 22 手机号 <input type="text" name="tel"> 23 <br> 24 <input type="hidden" name="icon" id="icon"> 25 <div id="picker">选择文件</div> 26 <img src="" alt="" id="pic"> 27 <input type="submit" value="提交"> 28 </form> 29 <a href="excle">导出excel</a> 30 <table id="table_id_example" class="display"> 31 <thead> 32 <tr> 33 <th>Column</th> 34 <th>Column 2</th> 35 <th>图片</th> 36 <th>操作</th> 37 </tr> 38 </thead> 39 <tbody> 40 @foreach($data as $val) 41 <tr> 42 <td>{{$val->id}}</td> 43 <td>{{$val->name}}</td> 44 <td><img src="{{$val->icon}}" alt="" width="30px"></td> 45 <td><a href="">删除</a></td> 46 </tr> 47 @endforeach 48 </tbody> 49 </table> 50 <a href="logout">退出</a> 51 </body> 52 </html> 53 54 <!--引入CSS--> 55 <link rel="stylesheet" type="text/css" href="/webuploader/webuploader.css"> 56 <!--引入JS--> 57 <script type="text/javascript" src="/webuploader/webuploader.js"></script> 58 <script> 59 var uploader = WebUploader.create({ 60 // 选定文件后,是否自动上传 61 auto: true, 62 // swf文件路径 63 swf: '/webuploader/Uploader.swf', 64 // 文件接收服务端。 65 server: 'http://www.monthtest.com/upload', 66 // 设置上传的表单数据 67 formData:{ 68 "_token":"{{csrf_token()}}" 69 }, 70 // 选择文件的按钮。可选。 71 // 内部根据当前运行是创建,可能是input元素,也可能是flash. 72 pick: '#picker', 73 // 不压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传! 74 resize: false, 75 // 设置上传域的name属性 76 fileVal:"file", 77 }); 78 uploader.on( 'uploadSuccess', function( file,ret ) { 79 console.log(ret.path) 80 // 将上传成功后的图片存储路径放置隐藏域中 81 $("#icon").val(ret.path); 82 // 将图片路径放置img标签中,实现图片的预览 83 $("#pic").attr("src",ret.path); 84 $("#pic").attr("style","width: 100px; height: 100px"); 85 86 }); 87 88 $(document).ready( function () { 89 $('#table_id_example').DataTable(); 90 } ); 91 </script>
1 <script type="text/javascript"> 2 // 前端表单验证 3 $("#form-fangattr-add").validate({ 4 // 规则 5 rules: { 6 // 表单元素名称 7 name: { 8 // 验证规则 9 required: true 10 } 11 }, 12 // 取消键盘事件 13 onkeyup: false, 14 //验证成功后的样式 15 success: "valid", 16 // 验证通过后,处理的方法 form dom对象 17 submitHandler: function (form) { 18 // 表单提交 19 form.submit(); 20 } 21 }) 22 // 初始化web uploader 23 var uploader = WebUploader.create({ 24 // 选定文件后,是否自动上传 25 auto: true, 26 // swf文件路径 27 swf: '/webuploader/Uploader.swf', 28 // 设置上传的表单数据 29 formData:{ 30 "_token":"{{csrf_token()}}" 31 }, 32 // 设置上传域的name属性 33 fileVal:"file", 34 // 文件接收服务端 35 server: '{{route('admin.fangattr.upfile')}}', 36 // 选择文件的按钮。可选。 37 // 内部根据当前运行是创建,可能是input元素,也可能是flash. 38 pick: '#picker', 39 // 不压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传! 40 resize: false 41 }); 42 // 上传成功后的回调函数 43 uploader.on( 'uploadSuccess', function ( file,ret) { 44 console.log(ret.path) 45 // 将上传成功后的图片存储路径放置隐藏域中 46 $("#icon").val(ret.path); 47 // 将图片路径放置img标签中,实现图片的预览 48 $("#pic").attr("src",ret.path); 49 $("#pic").attr("style","width: 100px; height: 100px"); 50 }) 51 </script>
控制器:
1 public function upload(Request $request) 2 { 3 if ($request->hasFile('file')){ 4 $imgName = $request->file('file')->store("","upload"); 5 $pic = "/uploads/".$imgName; 6 $img = Image::make($request->file('file'))->text('yeah',120,200)->save(".".$pic); 7 } 8 9 $accessKey = "61p_0CrAlVUyuDLoXVrCd4S4y6qC-KV7VbrP60xa"; 10 $secretKey = "NNgotBtybWBVURH6niPPjkLrqKDbnVrW8iUkMlQ4"; 11 $uploadMgr = new UploadManager(); 12 $auth = new \Qiniu\Auth($accessKey, $secretKey); 13 $token = $auth->uploadToken("zfw"); 14 list($ret, $error) = $uploadMgr->putFile($token, time(),".".$pic); 15 16 17 return ['state'=>200,'path'=>$pic]; 18 }