cli.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. <?php
  2. set_time_limit(0);
  3. require_once('vendor/autoload.php');
  4. use League\Flysystem\Plugin\ListFiles;
  5. use League\Flysystem\Plugin\ListPaths;
  6. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  7. use PhpOffice\PhpSpreadsheet\Style\Alignment;
  8. use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
  9. error_reporting(0);
  10. $settings = [
  11. 'baseUri' => 'https://www.meitu.live:433/remote.php/webdav/',
  12. 'userName' => "wangyating",
  13. 'password' => "wyt4913402",
  14. 'authType'=>CURLAUTH_BASIC
  15. ];
  16. $client = new Sabre\DAV\Client($settings);
  17. $adapter = new League\Flysystem\WebDAV\WebDAVAdapter($client,"/remote.php/webdav");
  18. $flysystem = new League\Flysystem\Filesystem($adapter);
  19. $flysystem->addPlugin(new ListFiles());
  20. $flysystem->addPlugin(new ListPaths());
  21. $wd = $argv[1];
  22. $deep = $argv[2] ?: 1;
  23. $keys = explode(",", $wd);
  24. $result = $response = [];
  25. baidu($keys);
  26. $spreadsheet = new Spreadsheet();
  27. $sheet = $spreadsheet->getActiveSheet();
  28. $sheet->setTitle("为你推荐-相关搜索词");
  29. $row = 1;
  30. $sheet->setCellValue("A" . $row, "序号");
  31. $sheet->setCellValue("B" . $row, "关键词");
  32. $sheet->setCellValue("C" . $row, "相关搜索词");
  33. $row++;
  34. foreach ($result as $key => $item) {
  35. $sheet->setCellValue("A" . $row, $row - 1);
  36. $sheet->setCellValue("B" . $row, $item['key']);
  37. $sheet->setCellValue("C" . $row, $item['relatedWd']);
  38. $row++;
  39. }
  40. $styleArray = [
  41. 'alignment' => [
  42. 'horizontal' => Alignment::HORIZONTAL_CENTER,
  43. 'vertical' => Alignment::VERTICAL_CENTER,
  44. ],
  45. ];
  46. $sheet->getColumnDimension("A")->setWidth(14);
  47. $sheet->getColumnDimension("B")->setWidth(25);
  48. $sheet->getColumnDimension("C")->setWidth(25);
  49. $sheet->getStyle("A1:C" . $row)->applyFromArray($styleArray);
  50. $writer = new Xlsx($spreadsheet);
  51. //$file_path = sprintf(sys_get_temp_dir() . "/%s-%s.xlsx", $wd, date("Y-m-d"));
  52. $file_path = tempnam(sys_get_temp_dir(), 'baidu');;
  53. $writer->save($file_path);
  54. $flysystem->put(sprintf("关键词/关键词拓展/百度/百度为您推荐/%s-%s.xlsx",$wd,date("YmdHis")), file_get_contents($file_path));
  55. $data=$flysystem->listFiles("关键词/关键词拓展/百度/百度为您推荐");
  56. //var_dump($data);
  57. $spreadsheet->disconnectWorksheets();
  58. function baidu($wds)
  59. {
  60. global $deep;
  61. for ($i = 0; $i < $deep; $i++) {
  62. if (!isset($_wds)) {
  63. $_wds = $wds;
  64. }
  65. $wds2 = [];
  66. foreach ($_wds as $wd) {
  67. $wds2 = array_merge($wds2, getRelatedKeywords($wd));
  68. }
  69. $_wds = $wds2;
  70. }
  71. }
  72. function getRelatedKeywords($wd)
  73. {
  74. global $response, $result;
  75. $searchUrl = "http://www.baidu.com/s?ie=UTF-8&rn=20&wd=%s";
  76. $url = sprintf($searchUrl, $wd);
  77. $rules = [
  78. 'json' => ['.c-tools', 'data-tools'],
  79. ];
  80. $ql = (new QL\QueryList)->get($url);
  81. $rt = $ql->rules($rules)->query()->getData();
  82. $rt = json_decode(json_encode($rt), true);
  83. $wds = [];
  84. foreach ($rt as $item) {
  85. $json = json_decode($item['json'], true);
  86. $baiduUrl = substr($json['url'], 30);
  87. if ($baiduUrl) {
  88. $_url = "https://sp2.baidu.com/8LUYsjW91Qh3otqbppnN2DJv/link?url=%s&query=%s&cb=jQuery110206243498231922682_1558178381142&data_name=recommend_common_merger_online&format=json&t=%s";
  89. $_url = sprintf($_url, $baiduUrl, $wd, time() . "000");
  90. $data = @file_get_contents($_url);
  91. $pat = "#1558178381142\((.*)\)#";
  92. preg_match($pat, $data, $arr);
  93. $data = json_decode($arr[1], true);
  94. if ($data['data'][0]['hintData']) {
  95. foreach ($data['data'][0]['hintData'] as $hintDatum) {
  96. if ($response[md5($item['wd'])]) {
  97. continue;
  98. }
  99. foreach ($hintDatum['linkInfo'] as $item) {
  100. $response[md5($item['wd'])] = $item['wd'];
  101. $result[] = ['key' => $wd, 'relatedWd' => $item['wd']];
  102. $wds[] = $item['wd'];
  103. }
  104. foreach ($hintDatum['linkInfo2'] as $item) {
  105. $response[md5($item['wd'])] = $item['wd'];
  106. $result[] = ['key' => $wd, 'relatedWd' => $item['wd']];
  107. $wds[] = $item['wd'];
  108. }
  109. }
  110. }
  111. // print_r($data);die();
  112. }
  113. }
  114. return $wds;
  115. }