数据采集

采集列表

 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     }

 

上一篇:Python爬虫入门记(5)- 批量下载图片(正则表达式,以百度文库为例)


下一篇:搬家第14天-138.Wincc V7.3 c脚本计算ListView勾选的行数、勾选行flow1求和、最大值、最小值