站三界导航
首页 PHP代码2023最新聚合热搜热榜PHP接口API源码

2023最新聚合热搜热榜PHP接口API源码

  • PHP代码
  • 来源:站三界导航
  • 40阅读
  • 2023-07-04

聚合热搜热榜PHP接口API源码,本源码接口均抓取采集各大官网数据。

PHP环境为5.6或以上,解压压缩包里面的hotlist.php文件到网站目录

然后输入参数输入?type

参数内容:

zhihu(知乎热榜) weibo(微博热搜) baidu(百度热点) history(历史上的今天) bilihot(哔哩哔哩热搜) biliall(哔哩哔哩全站日榜) sspai(少数派头条) douyin(抖音热搜) CSDN(CSDN头条榜)

使用方法

访问你的 域名地址/hotlist.php?type=

?type=(输入参数才能显示内容)

示例:

访问你的 域名地址/hotlist.php?type=zhihu

API源码

<?php
header("Access-Control-Allow-Origin:*");
header("Content-type:application/json; charset=utf-8");
date_default_timezone_set("Asia/Shanghai");
class Api
{
  // 少数派 热榜
  public function sspai()
  {
    $jsonRes = json_decode($this->Curl('https://sspai.com/api/v1/article/tag/page/get?limit=100000&tag=%E7%83%AD%E9%97%A8%E6%96%87%E7%AB%A0', null, null, "https://sspai.com"), true);
    $tempArr = [];
    foreach ($jsonRes['data'] as $k => $v) {
      array_push($tempArr, [
        'index' => $k +1,
        'title' => $v['title'],
        'createdAt' => date('Y-m-d', $v['released_time']),
        'other' => $v['author']['nickname'],
        'like_count' => $v['like_count'],
        'comment_count' => $v['comment_count'],
        'url' => 'https://sspai.com/post/'.$v['id'],
        'mobilUrl' => 'https://sspai.com/post/'.$v['id']
      ]);
    }
    return [
      'success' => true,
      'title' => '少数派',
      'subtitle' => '热榜',
      'update_time' => date('Y-m-d h:i:s', time()),
      'data' => $tempArr
    ];
  }
   
  // CSDN 头条榜
  public function csdn()
  {
    $_resHtml = $this->Curl('https://www.csdn.net', null, "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1", "https://www.csdn.net");
    preg_match('/window.__INITIAL_STATE__=(.*?);<\/script>/', $_resHtml, $_resHtmlArr);
    $jsonRes = json_decode($_resHtmlArr[1],true);
    $tempArr = [];
    //头条
    foreach ($jsonRes['pageData']['data']['Headimg'] as $k => $v) {
      array_push($tempArr, [
        'index' => $k +1,
        'title' => $v['title'],
        'url' => $v['url'],
        'mobilUrl' => $v['url']
      ]);
    }
    //头条1
    foreach ($jsonRes['pageData']['data']['www-Headlines'] as $k => $v) {
      array_push($tempArr, [
        'index' => $k +17,
        'title' => $v['title'],
        'url' => $v['url'],
        'mobilUrl' => $v['url']
      ]);
    }
    //头条2
    foreach ($jsonRes['pageData']['data']['www-headhot'] as $k => $v) {
      array_push($tempArr, [
        'index' => $k +48,
        'title' => $v['title'],
        'url' => $v['url'],
        'mobilUrl' => $v['url']
      ]);
    }
    return [
      'success' => true,
      'title' => 'CSDN',
      'subtitle' => '头条榜',
      'update_time' => date('Y-m-d h:i:s', time()),
      'data' => $tempArr
    ];
  }
   
  //百度百科  历史上的今天
  public function history()
  {
    $month=date('m',time() );
    $day=date('d',time() );
    //当前年月日
    $today = date('Y年m月d日');
    //获取接口数据
    $jsonRes = json_decode($this->Curl('https://baike.baidu.com/cms/home/eventsOnHistory/'.$month.'.json', null, null, "https://baike.baidu.com"), true);
    $tempArr = [];
    //统计当日总数
    $countnum = count($jsonRes[$month][$month.$day])-1;
    foreach ($jsonRes[$month][$month.$day] as $k => $v) {
      array_push($tempArr, [
        'index' => $k +1,
        'title' => $v['year'].'年-'.strip_tags($v['title']),
        'url' => 'https://www.douyin.com/search/'.urlencode($v['title']),
        'mobilUrl' => 'https://www.douyin.com/search/'.urlencode($v['title'])
      ]);
    }
    return [
      'success' => true,
      'title' => '百度百科',
      'subtitle' => '历史上的今天',
      'update_time' => date('Y-m-d h:i:s', time()),
      'data' => $tempArr
    ];
  }
   
  // 抖音 热搜榜
  public function douyin()
  {
    $jsonRes = json_decode($this->Curl('https://www.iesdouyin.com/web/api/v2/hotsearch/billboard/word/', null, null, "https://www.douyin.com"), true);
    $tempArr = [];
    foreach ($jsonRes['word_list'] as $k => $v) {
      array_push($tempArr, [
        'index' => $k +1,
        'title' => $v['word'],
        'hot' => round($v['hot_value']/10000,1).'万',
        'url' => 'https://www.douyin.com/search/'.urlencode($v['word']),
        'mobilUrl' => 'https://www.douyin.com/search/'.urlencode($v['word'])
      ]);
    }
    return [
      'success' => true,
      'title' => '抖音',
      'subtitle' => '热搜榜',
      'update_time' => date('Y-m-d h:i:s', time()),
      'data' => $tempArr
    ];
  }
  // 哔哩哔哩 全站日榜
  public function bilibili_rankall()
  {
    $jsonRes = json_decode($this->Curl('https://api.bilibili.com/x/web-interface/ranking/v2?rid=0&type=all', null, null, "https://www.bilibili.com"), true);
    $tempArr = [];
    foreach ($jsonRes['data']['list'] as $k => $v) {
      array_push($tempArr, [
        'index' => $k +1,
        'title' => $v['title'],
        'pic' => $v['pic'],
        'desc' => $v['desc'],
        'hot' => round($v['stat']['view']/10000,1).'万',
        'url' => $v['short_link'],
        'mobilUrl' => $v['short_link']
      ]);
    }
    return [
      'success' => true,
      'title' => '哔哩哔哩',
      'subtitle' => '全站日榜',
      'update_time' => date('Y-m-d h:i:s', time()),
      'data' => $tempArr
    ];
  }
  // 哔哩哔哩 热搜榜
  public function bilibili_hot()
  {
    $jsonRes = json_decode($this->Curl('https://app.bilibili.com/x/v2/search/trending/ranking', null, null, "https://www.bilibili.com"), true);
    $tempArr = [];
    //return $jsonRes;
    foreach ($jsonRes['data']['list'] as $k => $v) {
      array_push($tempArr, [
        'index' => $v['position'],
        'title' => $v['keyword'],
        'url' => 'https://search.bilibili.com/all?keyword='.$v['keyword'].'&order=click',
        'mobilUrl' => 'https://search.bilibili.com/all?keyword='.$v['keyword'].'&order=click'
      ]);
    }
    return [
      'success' => true,
      'title' => '哔哩哔哩',
      'subtitle' => '热搜榜',
      'update_time' => date('Y-m-d h:i:s', time()),
      'data' => $tempArr
    ];
  }
   
  // 知乎热榜  热度
  public function zhihuHot()
  {
    $jsonRes = json_decode($this->Curl('https://www.zhihu.com/api/v3/feed/topstory/hot-lists/total?limit=50&desktop=true', null, null, "https://www.zhihu.com"), true);
    $tempArr = [];
    foreach ($jsonRes['data'] as $k => $v) {
      preg_match('/\d+/',  $v['detail_text'], $hot);
      array_push($tempArr, [
        'index' => $k + 1,
        'title' => $v['target']['title'],
        'hot' => $hot[0].'万',
        'url' => 'https://www.zhihu.com/question/'.urlencode($v['target']['id']),
        'mobilUrl' => 'https://www.zhihu.com/question/'.urlencode($v['target']['id'])
      ]);
    }
    return [
      'success' => true,
      'title' => '知乎热榜',
      'subtitle' => '热度',
      'update_time' => date('Y-m-d h:i:s', time()),
      'data' => $tempArr
    ];
  }
  // 微博 热搜榜
  public function wbresou()
  {
    $_md5 = md5(time());
    $cookie = "Cookie: {$_md5}:FG=1";
    $jsonRes = json_decode($this->Curl('https://weibo.com/ajax/side/hotSearch', null, $cookie, "https://s.weibo.com"), true);
    $tempArr = [];
    foreach ($jsonRes['data']['realtime'] as $k => $v) {
      array_push($tempArr, [
        'index' => $k + 1,
        'title' => $v['note'],
        'hot' => round($v['num']/10000,1).'万',
        'url' => "https://s.weibo.com/weibo?q=".$v['note']."&Refer=index",
        'mobilUrl' => "https://s.weibo.com/weibo?q=".$v['note']."&Refer=index"
      ]);
    }
    return [
      'success' => true,
      'title' => '微博',
      'subtitle' => '热搜榜',
      'update_time' => date('Y-m-d h:i:s', time()),
      'data' => $tempArr
    ];
  }
  // 百度热点 指数
  public function baiduredian()
  {
    $_resHtml = str_replace(["\n", "\r", " "], '', $this->Curl('https://top.baidu.com/board?tab=realtime', null));
    preg_match('/<!--s-data:(.*?)-->/', $_resHtml, $_resHtmlArr);
    $jsonRes = json_decode($_resHtmlArr[1], true);
    //return $jsonRes;
    $tempArr = [];
    foreach ($jsonRes['data']['cards'] as $v) {
      foreach ($v['content'] as $k => $_v) {
        array_push($tempArr, [
          'index' => $k + 1,
          'title' => $_v['word'],
          'desc' => $_v['desc'],
          'pic' => $_v['img'],
          'url' => $_v['url'],
          'hot' => round($_v['hotScore']/10000,1).'万',
          'mobilUrl' => $_v['appUrl']
        ]);
      }
    }
    return [
      'success' => true,
      'title' => '百度热点',
      'subtitle' => '指数',
      'update_time' => date('Y-m-d h:i:s', time()),
      'data' => $tempArr
    ];
  }
  private function Curl($url, $header = [
    "accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
    "Accept-Encoding: gzip, deflate, br",
    "Accept-Language: zh-CN,zh;q=0.9",
    "Connection: keep-alive",
    "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1"
  ], $cookie = null, $refer = 'https://www.baidu.com')
  {
    $ip = rand(0, 255) . '.' . rand(0, 255) . '.' . rand(0, 255) . '.' . rand(0, 255);
    $header[] = "CLIENT-IP:" . $ip;
    $header[] = "X-FORWARDED-FOR:" . $ip;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url); //设置传输的 url
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header); //发送 http 报头
    curl_setopt($ch, CURLOPT_COOKIE, $cookie); //设置Cookie
    curl_setopt($ch, CURLOPT_REFERER,  $refer); //设置Referer
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate'); // 解码压缩文件
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 对认证证书来源的检查
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // 从证书中检查SSL加密算法是否存在
    curl_setopt($ch, CURLOPT_TIMEOUT, 5); // 设置超时限制防止死循环
    $output = curl_exec($ch);
    curl_close($ch);
    return $output;
  }
}
$_type = isset($_GET['type']) ? $_GET['type'] : '';
$API = new Api;
switch ($_type) {
  case 'baidu':
    $_res = $API->baiduredian();
    break;
  case 'zhihu':
    $_res = $API->zhihuHot();
    break;
  case 'weibo':
    $_res = $API->wbresou();
    break;
  case 'bilihot':
    $_res = $API->bilibili_hot();
    break;
  case 'biliall':
    $_res = $API->bilibili_rankall();
    break;
  case 'douyin':
    $_res = $API->douyin();
    break;
  case 'history':
    $_res = $API->history();
    break;
  case 'csdn':
    $_res = $API->csdn();
    break;
  case 'sspai':
    $_res = $API->sspai();
    break;
  default:
    $_res = ['success' => false, 'message' => '参数不完整'];
    break;
}
$_res['copyright'] = '聚合热搜榜';
exit(json_encode($_res,JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT));
?>
本文结束
本文来自投稿,不代表站三界导航立场,如若转载,请注明出处:https://www.zhansanjie.com/article/details/46624.html

版权声明:

1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

2、本站仅提供信息发布平台,不承担相关法律责任。

3、若侵犯您的版权或隐私,请联系本站管理员删除。

4、本文由会员转载自互联网,如果您是文章原创作者,请联系本站注明您的版权信息。

分享
站三界导航
本站声明:本站严格遵守国家相关法律规定,非正规网站一概不予收录。本站所有资料取之于互联网,任何公司或个人参考使用本资料请自辨真伪、后果自负,站三界导航不承担任何责任。在此特别感谢您对站三界导航的支持与厚爱。