site.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php
  2. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  3. use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
  4. use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
  5. use QL\Ext\Baidu;
  6. use QL\QueryList;
  7. require_once('vendor/autoload.php');
  8. $domain = $_REQUEST['domain'];
  9. $page = $_REQUEST['page']?:2;
  10. $word = $_REQUEST['word'];
  11. $ql = QueryList::getInstance();
  12. //$ql->use(Baidu::class);
  13. //or Custom function name
  14. $ql->use(Baidu::class, 'baidu');
  15. $baidu = $ql->baidu(10);
  16. //$searcher = $baidu->search('site:csdn.net');
  17. //$count = $searcher->getCount(); // 获取搜索结果总条数
  18. //$data = $searcher->page(1,true);
  19. //print_r($data);
  20. //die();
  21. //$data = $searcher->page(2);
  22. //$searcher = $baidu->search('php');
  23. //$countPage = 2;//$searcher->getCountPage(); // 获取搜索结果总页数
  24. $str = "site:".$domain ;
  25. if ($word) {
  26. $origin_str = [';', ';', ',', ',', ' ', "\r\n"];
  27. $des_str = [',', ',', ',', ',', ',', ','];
  28. $word = str_replace($origin_str, $des_str, $word);
  29. $word = explode(",", $word);
  30. }
  31. $header = [[
  32. 'title' => '标题',
  33. 'link' => '链接'
  34. ]];
  35. $p = 0;
  36. $spreadsheet = new Spreadsheet();
  37. if (!$word){
  38. $searcher = $baidu->search($str);
  39. $result = [];
  40. for ($i = 1; $i <= $page; $i++) {
  41. $data = $searcher->page($i,true);
  42. $data = json_decode(json_encode($data), true);
  43. $data = array_filter($data);
  44. $result = array_merge($result, $data);
  45. }
  46. $act_sheet = $spreadsheet->getActiveSheet();
  47. $result = array_merge($header, $result);
  48. $act_sheet->fromArray($result);
  49. }else{
  50. foreach ($word as $item) {
  51. $str = $str . " " . $item;
  52. $searcher = $baidu->search($str);
  53. $count = $searcher->getCount();
  54. $page = $page > $count ? $count : $page;
  55. $result = [];
  56. for ($i = 1; $i <= $page; $i++) {
  57. $data = $searcher->page($i, true);
  58. $data = json_decode(json_encode($data), true);
  59. $data = array_filter($data);
  60. $result = array_merge($result, $data);
  61. }
  62. $act_sheet = $spreadsheet->getActiveSheet();
  63. $result = array_merge($header, $result);
  64. $title = "关键词:" . $item;
  65. if ($p == 0) {
  66. $act_sheet->setTitle($title);
  67. $act_sheet->fromArray($result);
  68. } else {
  69. $sheet = new Worksheet();
  70. $sheet->setTitle($title);
  71. $sheet->fromArray($result);
  72. $spreadsheet->addSheet($sheet);
  73. }
  74. $p++;
  75. }
  76. }
  77. try {
  78. $writer = new Xlsx($spreadsheet);
  79. header("Pragma: public");
  80. header("Expires: 0");
  81. header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
  82. header("Content-Type:application/force-download");
  83. header("Content-Type:application/vnd.ms-execl");
  84. header("Content-Type:application/octet-stream");
  85. header("Content-Type:application/download");
  86. header('Content-Disposition:attachment;filename="site数据-[' . $domain . '].xlsx"');
  87. header("Content-Transfer-Encoding:binary");
  88. $writer->save('php://output');
  89. $spreadsheet->disconnectWorksheets();
  90. } catch (\PhpOffice\PhpSpreadsheet\Exception $e) {
  91. }