site.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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 = $_POST['domain'];
  9. $page = $_POST['page'];
  10. $word = $_POST['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. $str = "site:" . $domain;
  17. if ($word) {
  18. $origin_str = [';', ';', ',', ',', ' ', "\r\n"];
  19. $des_str = [',', ',', ',', ',', ',', ','];
  20. $word = str_replace($origin_str, $des_str, $word);
  21. $word=explode(",", $word);
  22. }
  23. $header = [[
  24. '标题',
  25. '链接',
  26. ]];
  27. $p = 0;
  28. $spreadsheet = new Spreadsheet();
  29. foreach ($word as $item) {
  30. $str = $str . " " . $item;
  31. $searcher = $baidu->search($str);
  32. $count = $searcher->getCount();
  33. $page = $page > $count ? $count : $page;
  34. $result = [];
  35. for ($i = 1; $i <= $page; $i++) {
  36. $data = $searcher->page($i, true);
  37. $data = json_decode(json_encode($data), true);
  38. $result = array_merge($result, $data);
  39. }
  40. $act_sheet = $spreadsheet->getActiveSheet();
  41. $result = array_merge($header, $result);
  42. $title="关键词:".$item;
  43. if ($p == 0) {
  44. $act_sheet->setTitle($title);
  45. $act_sheet->fromArray($result);
  46. }else{
  47. $sheet = new Worksheet();
  48. $sheet->setTitle($title);
  49. $sheet->fromArray($result);
  50. $spreadsheet->addSheet($sheet);
  51. }
  52. $p++;
  53. }
  54. try {
  55. $writer = new Xlsx($spreadsheet);
  56. header("Pragma: public");
  57. header("Expires: 0");
  58. header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
  59. header("Content-Type:application/force-download");
  60. header("Content-Type:application/vnd.ms-execl");
  61. header("Content-Type:application/octet-stream");
  62. header("Content-Type:application/download");
  63. header('Content-Disposition:attachment;filename="site数据-['.$domain.'].xlsx"');
  64. header("Content-Transfer-Encoding:binary");
  65. $writer->save('php://output');
  66. $spreadsheet->disconnectWorksheets();
  67. } catch (\PhpOffice\PhpSpreadsheet\Exception $e) {
  68. }
  69. //$data = $searcher->page(1,true);
  70. //$data=json_decode(json_encode($data),true);
  71. //print_r($data);