site.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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', "M");
  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. 'title' => '标题',
  25. 'link' => '链接'
  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. $data = array_filter($data);
  39. $result = array_merge($result, $data);
  40. }
  41. $act_sheet = $spreadsheet->getActiveSheet();
  42. $result = array_merge($header, $result);
  43. $title = "关键词:" . $item;
  44. if ($p == 0) {
  45. $act_sheet->setTitle($title);
  46. $act_sheet->fromArray($result);
  47. } else {
  48. $sheet = new Worksheet();
  49. $sheet->setTitle($title);
  50. $sheet->fromArray($result);
  51. $spreadsheet->addSheet($sheet);
  52. }
  53. $p++;
  54. }
  55. try {
  56. $writer = new Xlsx($spreadsheet);
  57. header("Pragma: public");
  58. header("Expires: 0");
  59. header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
  60. header("Content-Type:application/force-download");
  61. header("Content-Type:application/vnd.ms-execl");
  62. header("Content-Type:application/octet-stream");
  63. header("Content-Type:application/download");
  64. header('Content-Disposition:attachment;filename="site数据-[' . $domain . '].xlsx"');
  65. header("Content-Transfer-Encoding:binary");
  66. $writer->save('php://output');
  67. $spreadsheet->disconnectWorksheets();
  68. } catch (\PhpOffice\PhpSpreadsheet\Exception $e) {
  69. }
  70. //$data = $searcher->page(1,true);
  71. //$data=json_decode(json_encode($data),true);
  72. //print_r($data);