index.php 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. <?php
  2. set_time_limit(0);
  3. /**
  4. * Created by PhpStorm.
  5. * User: chendeben
  6. * Date: 2019-01-16
  7. * Time: 17:06
  8. */
  9. require_once('vendor/autoload.php');
  10. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  11. use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
  12. use QL\QueryList;
  13. //$ql = QueryList::get('https://www.baidu.com/s?wd=QueryList');
  14. //$titles = $ql->find('h3>a')->texts(); //获取搜索结果标题列表
  15. //$links = $ql->find('h3>a')->attrs('href'); //获取搜索结果链接列表
  16. //print_r($titles);
  17. //print_r($links);
  18. //die();
  19. $wd = $_REQUEST['wd'];
  20. if (!$wd) {
  21. ?>
  22. <!DOCTYPE html>
  23. <html lang="zh-cn">
  24. <head>
  25. <meta charset="utf-8">
  26. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  27. <meta name="viewport" content="width=device-width, initial-scale=1">
  28. <!-- ZUI 标准版压缩后的 CSS 文件 -->
  29. <link rel="stylesheet" href="//cdn.bootcss.com/zui/1.8.1/css/zui.min.css">
  30. <!-- ZUI Javascript 依赖 jQuery -->
  31. <script src="//cdn.bootcss.com/zui/1.8.1/lib/jquery/jquery.js"></script>
  32. <!-- ZUI 标准版压缩后的 JavaScript 文件 -->
  33. <script src="//cdn.bootcss.com/zui/1.8.1/js/zui.min.js"></script>
  34. </head>
  35. <body>
  36. <br>
  37. <br>
  38. <br>
  39. <br>
  40. <form method="post" action="">
  41. <div class="container">
  42. <div class="row">
  43. <div class="col-md-9">
  44. <textarea style="height: 300px;" class="form-control" rows="3" placeholder="请输入关键词,一行一个" name="wd"></textarea>
  45. </div>
  46. </div>
  47. <div class="row" style="margin-top: 5px;">
  48. <div class="col-md-2 col-md-offset-8">
  49. <input type="submit" class="btn btn-primary btn-lg" value="提交"/>
  50. </div>
  51. </div>
  52. </div>
  53. </form>
  54. </body>
  55. </html>
  56. <?php
  57. } else {
  58. $origin_str = [';', ';', ',', ',', ' ',"\r\n"];
  59. $des_str = [',', ',', ',', ',', ',',','];
  60. $wd = str_replace($origin_str, $des_str, $wd);
  61. $keys = explode(",", $wd);
  62. $baidu = baidu($keys);
  63. $shenma=shenma($keys);
  64. $sougou=sougou($keys);
  65. $so_360=so_360($keys);
  66. $spreadsheet = new Spreadsheet();
  67. $sheet = $spreadsheet->getActiveSheet();
  68. $sheet->setTitle("百度");
  69. $row = 1;
  70. foreach ($baidu as $key => $item) {
  71. $sheet->setCellValueByColumnAndRow(1, $row++, $item['keyword']);
  72. foreach ($item['related_keywords'] as $related_keyword) {
  73. $sheet->setCellValueByColumnAndRow(2, $row++, $related_keyword);
  74. }
  75. $row++;
  76. }
  77. $shenma_sheet=new \PhpOffice\PhpSpreadsheet\Worksheet\Worksheet();
  78. $row = 1;
  79. foreach ($shenma as $key => $item) {
  80. $shenma_sheet->setCellValueByColumnAndRow(1, $row++, $item['keyword']);
  81. foreach ($item['related_keywords'] as $related_keyword) {
  82. $shenma_sheet->setCellValueByColumnAndRow(2, $row++, $related_keyword);
  83. }
  84. $row++;
  85. }
  86. $shenma_sheet->setTitle("神马");
  87. $spreadsheet->addSheet($shenma_sheet);
  88. $sougou_sheet=new \PhpOffice\PhpSpreadsheet\Worksheet\Worksheet();
  89. $row = 1;
  90. foreach ($sougou as $key => $item) {
  91. $sougou_sheet->setCellValueByColumnAndRow(1, $row++, $item['keyword']);
  92. foreach ($item['related_keywords'] as $related_keyword) {
  93. $sougou_sheet->setCellValueByColumnAndRow(2, $row++, $related_keyword);
  94. }
  95. $row++;
  96. }
  97. $sougou_sheet->setTitle("搜狗");
  98. $spreadsheet->addSheet($sougou_sheet);
  99. $so_360_sheet=new \PhpOffice\PhpSpreadsheet\Worksheet\Worksheet();
  100. $row = 1;
  101. foreach ($so_360 as $key => $item) {
  102. $so_360_sheet->setCellValueByColumnAndRow(1, $row++, $item['keyword']);
  103. foreach ($item['related_keywords'] as $related_keyword) {
  104. $so_360_sheet->setCellValueByColumnAndRow(2, $row++, $related_keyword);
  105. }
  106. $row++;
  107. }
  108. $so_360_sheet->setTitle("360");
  109. $spreadsheet->addSheet($so_360_sheet);
  110. $writer = new Xlsx($spreadsheet);
  111. header("Pragma: public");
  112. header("Expires: 0");
  113. header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
  114. header("Content-Type:application/force-download");
  115. header("Content-Type:application/vnd.ms-execl");
  116. header("Content-Type:application/octet-stream");
  117. header("Content-Type:application/download");
  118. header('Content-Disposition:attachment;filename="相关搜索词.xlsx"');
  119. header("Content-Transfer-Encoding:binary");
  120. $writer->save('php://output');
  121. $spreadsheet->disconnectWorksheets();
  122. }
  123. function baidu($wd){
  124. $_url = "http://www.baidu.com/s?ie=UTF-8&wd=%s";
  125. $result=[];
  126. foreach ($wd as $key) {
  127. $url = sprintf($_url, $key);
  128. $ql = (new QL\QueryList)->get($url);
  129. $table = $ql->find("#rs > table");
  130. $tableRows = $table->find('tr')->map(function ($row) {
  131. return $row->find('th')->texts()->all();
  132. });
  133. $data = $tableRows->all();
  134. $_result = [];
  135. foreach ($data as $item) {
  136. foreach ($item as $value) {
  137. $_result[] = $value;
  138. }
  139. }
  140. $result[] = [
  141. 'keyword' => $key,
  142. 'related_keywords' => $_result
  143. ];
  144. }
  145. return $result;
  146. }
  147. function shenma($keys){
  148. $url="https://yz.m.sm.cn/s?q=%s&by=submit&uc_param_str=dnntnwvepffrgibijbprsvdsdichei&from=ws984141";
  149. $result=[];
  150. foreach ($keys as $key) {
  151. $url = sprintf($url, $key);
  152. $ql = QueryList::get($url);
  153. $table = $ql->find(".ali_rel > ul > li");
  154. $tableRows = $table->map(function ($row) {
  155. return $row->find('a')->texts()->all();
  156. });
  157. $data = $tableRows->all();
  158. // var_dump($data);
  159. // die();
  160. $_result = [];
  161. foreach ($data as $item) {
  162. foreach ($item as $value) {
  163. $_result[] = $value;
  164. }
  165. }
  166. $result[] = [
  167. 'keyword' => $key,
  168. 'related_keywords' => $_result
  169. ];
  170. }
  171. return $result;
  172. }
  173. function sougou($keys){
  174. $url="https://www.sogou.com/web?query=%s";
  175. $result=[];
  176. foreach ($keys as $key) {
  177. $url = sprintf($url, $key);
  178. $ql = QueryList::get($url);
  179. $table = $ql->find("#hint_container");
  180. $tableRows = $table->find('tr')->map(function ($row) {
  181. return $row->find('a')->texts()->all();
  182. });
  183. $data = $tableRows->all();
  184. // var_dump($data);
  185. // die();
  186. $_result = [];
  187. foreach ($data as $item) {
  188. foreach ($item as $value) {
  189. $_result[] = $value;
  190. }
  191. }
  192. $result[] = [
  193. 'keyword' => $key,
  194. 'related_keywords' => $_result
  195. ];
  196. }
  197. return $result;
  198. }
  199. function so_360($keys){
  200. $url="https://www.so.com/s?ie=utf-8&fr=none&src=360sou_newhome&q=%s";
  201. $result=[];
  202. foreach ($keys as $key) {
  203. $url = sprintf($url, $key);
  204. $ql = QueryList::get($url);
  205. $table = $ql->find("#rs > table");
  206. $tableRows = $table->find('tr')->map(function ($row) {
  207. return $row->find('a')->texts()->all();
  208. });
  209. $data = $tableRows->all();
  210. // var_dump($data);
  211. // die();
  212. $_result = [];
  213. foreach ($data as $item) {
  214. foreach ($item as $value) {
  215. $_result[] = $value;
  216. }
  217. }
  218. $result[] = [
  219. 'keyword' => $key,
  220. 'related_keywords' => $_result
  221. ];
  222. }
  223. return $result;
  224. }