|
|
@@ -0,0 +1,241 @@
|
|
|
+<?php
|
|
|
+set_time_limit(0);
|
|
|
+/**
|
|
|
+ * Created by PhpStorm.
|
|
|
+ * User: chendeben
|
|
|
+ * Date: 2019-01-16
|
|
|
+ * Time: 17:06
|
|
|
+ */
|
|
|
+require_once('vendor/autoload.php');
|
|
|
+
|
|
|
+use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
|
|
+use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
|
|
|
+use QL\QueryList;
|
|
|
+
|
|
|
+//$ql = QueryList::get('https://www.baidu.com/s?wd=QueryList');
|
|
|
+//$titles = $ql->find('h3>a')->texts(); //获取搜索结果标题列表
|
|
|
+//$links = $ql->find('h3>a')->attrs('href'); //获取搜索结果链接列表
|
|
|
+//print_r($titles);
|
|
|
+//print_r($links);
|
|
|
+//die();
|
|
|
+
|
|
|
+
|
|
|
+$wd = $_REQUEST['wd'];
|
|
|
+if (!$wd) {
|
|
|
+ ?>
|
|
|
+ <!DOCTYPE html>
|
|
|
+ <html lang="zh-cn">
|
|
|
+ <head>
|
|
|
+ <meta charset="utf-8">
|
|
|
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
|
+ <meta name="viewport" content="width=device-width, initial-scale=1">
|
|
|
+ <!-- ZUI 标准版压缩后的 CSS 文件 -->
|
|
|
+ <link rel="stylesheet" href="//cdn.bootcss.com/zui/1.8.1/css/zui.min.css">
|
|
|
+
|
|
|
+ <!-- ZUI Javascript 依赖 jQuery -->
|
|
|
+ <script src="//cdn.bootcss.com/zui/1.8.1/lib/jquery/jquery.js"></script>
|
|
|
+ <!-- ZUI 标准版压缩后的 JavaScript 文件 -->
|
|
|
+ <script src="//cdn.bootcss.com/zui/1.8.1/js/zui.min.js"></script>
|
|
|
+ </head>
|
|
|
+ <body>
|
|
|
+ <br>
|
|
|
+ <br>
|
|
|
+ <br>
|
|
|
+ <br>
|
|
|
+ <form method="post" action="">
|
|
|
+ <div class="container">
|
|
|
+ <div class="row">
|
|
|
+ <div class="col-md-9">
|
|
|
+ <textarea style="height: 300px;" class="form-control" rows="3" placeholder="请输入关键词,一行一个" name="wd"></textarea>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="row" style="margin-top: 5px;">
|
|
|
+ <div class="col-md-2 col-md-offset-8">
|
|
|
+ <input type="submit" class="btn btn-primary btn-lg" value="提交"/>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </form>
|
|
|
+
|
|
|
+ </body>
|
|
|
+ </html>
|
|
|
+ <?php
|
|
|
+} else {
|
|
|
+
|
|
|
+ $origin_str = [';', ';', ',', ',', ' ',"\r\n"];
|
|
|
+ $des_str = [',', ',', ',', ',', ',',','];
|
|
|
+ $wd = str_replace($origin_str, $des_str, $wd);
|
|
|
+ $keys = explode(",", $wd);
|
|
|
+ $baidu = baidu($keys);
|
|
|
+ $shenma=shenma($keys);
|
|
|
+ $sougou=sougou($keys);
|
|
|
+ $so_360=so_360($keys);
|
|
|
+
|
|
|
+ $spreadsheet = new Spreadsheet();
|
|
|
+ $sheet = $spreadsheet->getActiveSheet();
|
|
|
+ $sheet->setTitle("百度");
|
|
|
+ $row = 1;
|
|
|
+ foreach ($baidu as $key => $item) {
|
|
|
+ $sheet->setCellValueByColumnAndRow(1, $row++, $item['keyword']);
|
|
|
+ foreach ($item['related_keywords'] as $related_keyword) {
|
|
|
+ $sheet->setCellValueByColumnAndRow(2, $row++, $related_keyword);
|
|
|
+ }
|
|
|
+ $row++;
|
|
|
+ }
|
|
|
+
|
|
|
+ $shenma_sheet=new \PhpOffice\PhpSpreadsheet\Worksheet\Worksheet();
|
|
|
+ $row = 1;
|
|
|
+ foreach ($shenma as $key => $item) {
|
|
|
+ $shenma_sheet->setCellValueByColumnAndRow(1, $row++, $item['keyword']);
|
|
|
+ foreach ($item['related_keywords'] as $related_keyword) {
|
|
|
+ $shenma_sheet->setCellValueByColumnAndRow(2, $row++, $related_keyword);
|
|
|
+ }
|
|
|
+ $row++;
|
|
|
+ }
|
|
|
+ $shenma_sheet->setTitle("神马");
|
|
|
+ $spreadsheet->addSheet($shenma_sheet);
|
|
|
+
|
|
|
+ $sougou_sheet=new \PhpOffice\PhpSpreadsheet\Worksheet\Worksheet();
|
|
|
+ $row = 1;
|
|
|
+ foreach ($sougou as $key => $item) {
|
|
|
+ $sougou_sheet->setCellValueByColumnAndRow(1, $row++, $item['keyword']);
|
|
|
+ foreach ($item['related_keywords'] as $related_keyword) {
|
|
|
+ $sougou_sheet->setCellValueByColumnAndRow(2, $row++, $related_keyword);
|
|
|
+ }
|
|
|
+ $row++;
|
|
|
+ }
|
|
|
+ $sougou_sheet->setTitle("搜狗");
|
|
|
+ $spreadsheet->addSheet($sougou_sheet);
|
|
|
+
|
|
|
+ $so_360_sheet=new \PhpOffice\PhpSpreadsheet\Worksheet\Worksheet();
|
|
|
+ $row = 1;
|
|
|
+ foreach ($so_360 as $key => $item) {
|
|
|
+ $so_360_sheet->setCellValueByColumnAndRow(1, $row++, $item['keyword']);
|
|
|
+ foreach ($item['related_keywords'] as $related_keyword) {
|
|
|
+ $so_360_sheet->setCellValueByColumnAndRow(2, $row++, $related_keyword);
|
|
|
+ }
|
|
|
+ $row++;
|
|
|
+ }
|
|
|
+ $so_360_sheet->setTitle("360");
|
|
|
+ $spreadsheet->addSheet($so_360_sheet);
|
|
|
+
|
|
|
+ $writer = new Xlsx($spreadsheet);
|
|
|
+ header("Pragma: public");
|
|
|
+ header("Expires: 0");
|
|
|
+ header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
|
|
|
+ header("Content-Type:application/force-download");
|
|
|
+ header("Content-Type:application/vnd.ms-execl");
|
|
|
+ header("Content-Type:application/octet-stream");
|
|
|
+ header("Content-Type:application/download");
|
|
|
+ header('Content-Disposition:attachment;filename="相关搜索词.xlsx"');
|
|
|
+ header("Content-Transfer-Encoding:binary");
|
|
|
+ $writer->save('php://output');
|
|
|
+ $spreadsheet->disconnectWorksheets();
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+function baidu($wd){
|
|
|
+ $_url = "http://www.baidu.com/s?ie=UTF-8&wd=%s";
|
|
|
+ $result=[];
|
|
|
+ foreach ($wd as $key) {
|
|
|
+ $url = sprintf($_url, $key);
|
|
|
+ $ql = (new QL\QueryList)->get($url);
|
|
|
+ $table = $ql->find("#rs > table");
|
|
|
+ $tableRows = $table->find('tr')->map(function ($row) {
|
|
|
+ return $row->find('th')->texts()->all();
|
|
|
+ });
|
|
|
+ $data = $tableRows->all();
|
|
|
+ $_result = [];
|
|
|
+ foreach ($data as $item) {
|
|
|
+ foreach ($item as $value) {
|
|
|
+ $_result[] = $value;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $result[] = [
|
|
|
+ 'keyword' => $key,
|
|
|
+ 'related_keywords' => $_result
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ return $result;
|
|
|
+}
|
|
|
+
|
|
|
+function shenma($keys){
|
|
|
+ $url="https://yz.m.sm.cn/s?q=%s&by=submit&uc_param_str=dnntnwvepffrgibijbprsvdsdichei&from=ws984141";
|
|
|
+ $result=[];
|
|
|
+ foreach ($keys as $key) {
|
|
|
+ $url = sprintf($url, $key);
|
|
|
+ $ql = QueryList::get($url);
|
|
|
+ $table = $ql->find(".ali_rel > ul > li");
|
|
|
+ $tableRows = $table->map(function ($row) {
|
|
|
+ return $row->find('a')->texts()->all();
|
|
|
+ });
|
|
|
+ $data = $tableRows->all();
|
|
|
+// var_dump($data);
|
|
|
+// die();
|
|
|
+ $_result = [];
|
|
|
+ foreach ($data as $item) {
|
|
|
+ foreach ($item as $value) {
|
|
|
+ $_result[] = $value;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $result[] = [
|
|
|
+ 'keyword' => $key,
|
|
|
+ 'related_keywords' => $_result
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ return $result;
|
|
|
+}
|
|
|
+
|
|
|
+function sougou($keys){
|
|
|
+ $url="https://www.sogou.com/web?query=%s";
|
|
|
+ $result=[];
|
|
|
+ foreach ($keys as $key) {
|
|
|
+ $url = sprintf($url, $key);
|
|
|
+ $ql = QueryList::get($url);
|
|
|
+ $table = $ql->find("#hint_container");
|
|
|
+ $tableRows = $table->find('tr')->map(function ($row) {
|
|
|
+ return $row->find('a')->texts()->all();
|
|
|
+ });
|
|
|
+ $data = $tableRows->all();
|
|
|
+// var_dump($data);
|
|
|
+// die();
|
|
|
+ $_result = [];
|
|
|
+ foreach ($data as $item) {
|
|
|
+ foreach ($item as $value) {
|
|
|
+ $_result[] = $value;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $result[] = [
|
|
|
+ 'keyword' => $key,
|
|
|
+ 'related_keywords' => $_result
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ return $result;
|
|
|
+}
|
|
|
+function so_360($keys){
|
|
|
+ $url="https://www.so.com/s?ie=utf-8&fr=none&src=360sou_newhome&q=%s";
|
|
|
+ $result=[];
|
|
|
+ foreach ($keys as $key) {
|
|
|
+ $url = sprintf($url, $key);
|
|
|
+ $ql = QueryList::get($url);
|
|
|
+ $table = $ql->find("#rs > table");
|
|
|
+ $tableRows = $table->find('tr')->map(function ($row) {
|
|
|
+ return $row->find('a')->texts()->all();
|
|
|
+ });
|
|
|
+ $data = $tableRows->all();
|
|
|
+// var_dump($data);
|
|
|
+// die();
|
|
|
+ $_result = [];
|
|
|
+ foreach ($data as $item) {
|
|
|
+ foreach ($item as $value) {
|
|
|
+ $_result[] = $value;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $result[] = [
|
|
|
+ 'keyword' => $key,
|
|
|
+ 'related_keywords' => $_result
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ return $result;
|
|
|
+}
|