|
@@ -1,206 +0,0 @@
|
|
|
-<?php
|
|
|
-/**
|
|
|
- * Created by PhpStorm.
|
|
|
- * User: win 10
|
|
|
- * Date: 2020/8/14
|
|
|
- * Time: 9:49
|
|
|
- */
|
|
|
-
|
|
|
-namespace app\admin\controller;
|
|
|
-use Aliyun\Common\Utilities\DateUtils;
|
|
|
-use phpDocumentor\Reflection\FqsenResolver;
|
|
|
-use think\Controller;
|
|
|
-use tp5redis\redis\driver\Redis;//redis扩展类
|
|
|
-use think\Request;
|
|
|
-use QL\QueryList;//内容采集类
|
|
|
-//测试功能专用
|
|
|
-
|
|
|
-class Tests extends Controller
|
|
|
-{
|
|
|
-
|
|
|
- public function gather(){//网页数据采集
|
|
|
- set_time_limit(0);//网页处理永不超时
|
|
|
- //采集网址
|
|
|
-// $url = 'https://shareably.net/';
|
|
|
-// $range ='.fullwidth>.row';
|
|
|
-
|
|
|
-
|
|
|
-//1-10页的图片都有了 下次采集就从11页开始,前10页内容和图片都已经采集
|
|
|
- $url ="https://smartlifetricks.com/category/living/page/2";
|
|
|
- $range ='.td-main-content>.td-ss-main-content';
|
|
|
-
|
|
|
-// 采集规则
|
|
|
- $rules = array (
|
|
|
-
|
|
|
- 'title'=>array(
|
|
|
- 'div>div>div>h3',//选择div下的第一个p标签
|
|
|
- 'html',//需要翻译功能的时候就改为text
|
|
|
- ),
|
|
|
-
|
|
|
- 'img'=>array(
|
|
|
- 'div>div>div>div>div>a',//选择div下的第一个p标签
|
|
|
- 'html',//需要翻译功能的时候就改为text
|
|
|
- ),
|
|
|
-
|
|
|
-// 'time'=>array(
|
|
|
-// 'time',
|
|
|
-// 'datetime',
|
|
|
-// ),
|
|
|
-
|
|
|
-
|
|
|
- );
|
|
|
-
|
|
|
- $data = QueryList::get($url)->rules($rules)->range($range)->queryData();
|
|
|
-
|
|
|
-
|
|
|
- dump($data);die;
|
|
|
-
|
|
|
- $pa = '/(src)="(.*?(jpg|jpeg|gif|png))/i';//匹配img的src链接
|
|
|
- preg_match_all($pa, $data[0]['img'], $matches);
|
|
|
- $imur = $matches[2];
|
|
|
-
|
|
|
-
|
|
|
- $reg3 = '/<a[^>]*([\s\S]*?)<\/a>/i';//匹配a标签中的内容,不需要带超链接就加上[^>]:/<a[^>]*([\s\S]*?)<\/a>/i
|
|
|
- preg_match_all($reg3,$data[0]['title'],$acontent);
|
|
|
- $ma = $acontent[1];
|
|
|
-
|
|
|
-
|
|
|
-/* $reg4 ='/<a .*?href="(.*?)".*?>/is';//匹配a标签的href地址*/
|
|
|
-// preg_match_all($reg4,$data[0]['content'],$acontents);
|
|
|
-// $mas = $acontents[1];
|
|
|
-
|
|
|
- $result=[];
|
|
|
- foreach ($ma as $key=>$content) {
|
|
|
- $temp = ['title'=>$content];
|
|
|
-// $contentapi =json_decode(file_get_contents("http://fanyi.youdao.com/translate?&doctype=json&type=AUTO&i=".$te),true);
|
|
|
- $dss['title'] = $temp['title'];
|
|
|
- $temp['img'] = isset($imur[$key])?$imur[$key]:'';
|
|
|
- $baseName = basename($temp['img']);//获取图片文件名
|
|
|
- $pattern = "/^(http|https):\/\/.*$/i";//正则匹配链接地址
|
|
|
- $dss['img'] = preg_replace($pattern, '/static/uploads/images/' . $baseName . '', $temp['img']);//将网页图片地址替换成本地图片存放地址
|
|
|
- $ds['content'] = '<img src="' . $dss['img'] . '">';
|
|
|
- $ds['title']=$dss['title'];
|
|
|
- $ds['author']='爱奇君';
|
|
|
- $ds['time'] = date('Y-m-d',time());
|
|
|
-
|
|
|
- $result[] = $ds;
|
|
|
- }
|
|
|
- dump($result);
|
|
|
-
|
|
|
-// db('article')->insertAll($result);//将采取数据插入到数据表
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-// $data = QueryList::get($url)->rules($rules)->range($range)->queryData();
|
|
|
-// //dump($data);
|
|
|
-
|
|
|
-// $pregStrs = '/<(h[1-6])>([\S\s]*?)<\/\1>/';//匹配h标签相同元素值(内容)
|
|
|
-// preg_match_all($pregStrs, $data[0]['content'], $maths);
|
|
|
-// $ma = $maths[2];
|
|
|
-//
|
|
|
-// $pa = '/(src)="(.*?(jpg|jpeg|gif|png))/i';//匹配img的src链接
|
|
|
-// preg_match_all($pa, $data[0]['img'], $matches);
|
|
|
-// $imur = $matches[2];
|
|
|
-//`
|
|
|
-// $result=[];
|
|
|
-// foreach ($ma as $key=>$content) {
|
|
|
-// $temp = ['content'=>$content];
|
|
|
-// $contentapi = json_decode(file_get_contents("http://fanyi.youdao.com/openapi.do?keyfrom=xujiangtao&key=1490852988&type=data&doctype=json&version=1.1&q=".$temp['content']),true);
|
|
|
-// $contentapi =json_decode(file_get_contents("http://fanyi.youdao.com/translate?&doctype=json&type=AUTO&i=".$temp['content']),true);
|
|
|
-// $dss['content'] = $contentapi['translation'][0];
|
|
|
-//
|
|
|
-// $temp['img'] = isset($imur[$key])?$imur[$key]:'';
|
|
|
-// $baseName = basename($temp['img']);//获取图片文件名
|
|
|
-// $pattern = "/^(http|https):\/\/.*$/i";//正则匹配链接地址
|
|
|
-//
|
|
|
-// $dss['img'] = preg_replace($pattern, '/static/uploads/images/' . $baseName . '', $temp['img']);//将网页图片地址替换成本地图片存放地址
|
|
|
-//
|
|
|
-// $ds['content'] = '
|
|
|
-// <p>' . $dss['content'] . '</p>
|
|
|
-//
|
|
|
-// <img src="' . $dss['img'] . '">';
|
|
|
-//
|
|
|
-// $ds['title']="生活";
|
|
|
-// $ds['author']='爱奇君';
|
|
|
-// $ds['time'] = date('Y-m-d',time());
|
|
|
-//
|
|
|
-// $result[] = $ds;
|
|
|
-// }
|
|
|
-//// dump($result);
|
|
|
-// db('article')->insertAll($result);//将采取数据插入到数据表
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-// $pregStr='/<h3[^>].*>(.*)<\/h3>/';//匹配相同标的元素值
|
|
|
-// preg_match_all($pregStr,$data[0]['title'],$math);
|
|
|
-// $mas = $math[1];
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- //下载网页图片到本地
|
|
|
- /**
|
|
|
- * $imgUrl:图片地址
|
|
|
- */
|
|
|
- public function saveImg($imgUrl){
|
|
|
- set_time_limit(0);
|
|
|
- $ext=strrchr($imgUrl,'.');
|
|
|
- if(!in_array($ext,['.jpg','.png','.jpeg','.gif']))
|
|
|
- return $imgUrl;
|
|
|
- $baseName=basename($imgUrl);//获取文件名
|
|
|
- $saveUrl="/upload/img/".$baseName;
|
|
|
- //文件保存绝对路径
|
|
|
- $path=__DIR__.DS.'../../../public/static/uploads'.DS.$baseName;
|
|
|
- $img = file_get_contents($imgUrl);
|
|
|
-
|
|
|
- file_put_contents($path,$img);
|
|
|
- return $saveUrl;
|
|
|
- }
|
|
|
-
|
|
|
- public function downImg(){//批量下载网页图片保存到本地项目文件下
|
|
|
- set_time_limit(0);
|
|
|
-// $url = 'https://shareably.net/';
|
|
|
-// $range ='.fullwidth>.row';
|
|
|
-//
|
|
|
-// $rules = array (
|
|
|
-// 'img'=>array(
|
|
|
-// 'div>ol>li>div>div',//选择div下的第一个p标签
|
|
|
-// 'html',//需要翻译功能的时候就改为text
|
|
|
-// )
|
|
|
-// );
|
|
|
- $url = 'https://smartlifetricks.com/category/living/page/11';
|
|
|
- $range ='.td-main-content>.td-ss-main-content';
|
|
|
-
|
|
|
- $rules = array (
|
|
|
- 'img'=>array(
|
|
|
- 'div>div>div>div>div>a',//选择div下的第一个p标签
|
|
|
- 'html',//需要翻译功能的时候就改为text
|
|
|
- ),
|
|
|
- );
|
|
|
- $data = QueryList::get($url)->rules($rules)->range($range)->queryData();
|
|
|
-
|
|
|
- $pa = '/(src)="(.*?(jpg|jpeg|gif|png))/i';//匹配img的src链接
|
|
|
- preg_match_all($pa, $data[0]['img'], $matches);
|
|
|
- $imur = $matches[2];
|
|
|
- dump($imur);die;
|
|
|
- foreach ( $imur as $url ) {//因为 $imgUrl是一个数组,里面有多张图片路径,所以直接循环调用 saveImg()方法
|
|
|
- $this->saveImg($url);
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-}
|