去评论
dz插件网

从0到1搭建PHP热点新闻聚合与Ai对接平台,小白也能轻松上手!

xiao9469
2025/02/22 09:33:03
每天热点新闻聚合站php采集。怎么获得他们的接口呢?自己找到他们对应的接口就行了。小编找了几个。先看看封装的几个效果
比如百度的:https://www.wenyunfang.com/ecmsapi/duomeiti/hot/baidu/
比如抖音的:https://www.wenyunfang.com/ecmsapi/duomeiti/hot/douyin/
比如知乎的:https://www.wenyunfang.com/ecmsapi/duomeiti/hot/zhihu/
细心的都看见了,就是最后的请求参数变了而已就能获取到他们对应的热点新闻了。不啰嗦开始上代码。有点长直接复制过去调试就行
  1. <?php// Curl请求函数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);curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_COOKIE, $cookie); curl_setopt($ch, CURLOPT_REFERER,  $refer);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); curl_setopt($ch, CURLOPT_TIMEOUT, 5); $output = curl_exec($ch);curl_close($ch);return $output;}// 少数派 热榜function sspai(){$jsonRes = json_decode(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];}// 抖音 热搜榜function douyin(){$jsonRes = json_decode(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];}// 哔哩哔哩 全站日榜function bilibili_rankall(){$jsonRes = json_decode(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];}// 哔哩哔哩 热搜榜function bilibili_hot(){$jsonRes = json_decode(Curl('https://app.bilibili.com/x/v2/search/trending/ranking', null, null, "https://www.bilibili.com"), true);$tempArr = [];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];}// 知乎热榜  热度function zhihuHot(){$jsonRes = json_decode(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];}// 微博 热搜榜function wbresou(){$_md5 = md5(time());$cookie = "Cookie: {$_md5}:FG=1";$jsonRes = json_decode(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];}// 百度热点 指数function baiduredian(){$_resHtml = str_replace(["\n", "\r", " "], '', Curl('https://top.baidu.com/board?tab=realtime', null));preg_match('/<!--s-data:(.*?)-->/', $_resHtml, $_resHtmlArr);$jsonRes = json_decode($_resHtmlArr[1], true);$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];}$_type = $_GET['enews'] ? $_GET['enews'] : '';switch ($_type) {    case 'baidu':        $_res = baiduredian();        break;    case 'zhihu':        $_res = zhihuHot();        break;    case 'weibo':        $_res = wbresou();        break;    case 'bilihot':        $_res = bilibili_hot();        break;    case 'biliall':        $_res = bilibili_rankall();        break;    case 'douyin':        $_res = douyin();        break;    case 'sspai':        $_res = sspai();        break;    default:        $_res = ['success' => false, 'message' => '参数不完整'];        break;}echo json_encode($_res, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
以上代码命名为hot.php。那如请求百度的就是hot.php?enews=baidu
怎么与小编的不是一样的呢 ?因为小编的接口已经已经被伪静态了。其实get请求字段都是enews