.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 = '/]*([\s\S]*?)<\/a>/i';//匹配a标签中的内容,不需要带超链接就加上[^>]:/]*([\s\S]*?)<\/a>/i preg_match_all($reg3,$data[0]['title'],$acontent); $ma = $acontent[1]; /* $reg4 ='//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'] = ''; $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'] = ' //

' . $dss['content'] . '

// // '; // // $ds['title']="生活"; // $ds['author']='爱奇君'; // $ds['time'] = date('Y-m-d',time()); // // $result[] = $ds; // } //// dump($result); // db('article')->insertAll($result);//将采取数据插入到数据表 // $pregStr='/].*>(.*)<\/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); } } }