广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >基于PHP如何实现微博热搜实时监控平台
  • 793
分享到

基于PHP如何实现微博热搜实时监控平台

2023-07-02 10:07:33 793人浏览 安东尼
摘要

本文小编为大家详细介绍“基于PHP如何实现微博热搜实时监控平台”,内容详细,步骤清晰,细节处理妥当,希望这篇“基于php如何实现微博热搜实时监控平台”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、整体思路对于搜

本文小编为大家详细介绍“基于PHP如何实现微博热搜实时监控平台”,内容详细,步骤清晰,细节处理妥当,希望这篇“基于php如何实现微博热搜实时监控平台”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

    一、整体思路

    对于搜集数据当然是写个爬虫就好了,首先脑里闪过的是用python,但是人总是喜欢尝试下新东西,于是我选择试试用PHP来写爬虫。所以,大体框架便出来了:

    基于PHP如何实现微博热搜实时监控平台

    二、数据爬取

    1.获取html

    PHP爬取微博热搜页面,得到HTML源码

    function getUrlContent($url){//通过url获取html内容    $ch = curl_init();    curl_setopt($ch,CURLOPT_URL,$url);    curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/4.0 (compatible; MSIE 7.0; windows NT 6.1 )");    curl_setopt($ch,CURLOPT_HEADER,1);    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);    $output = curl_exec($ch);    curl_close($ch);    return $output; }

    当然,也可以直接用file_get_contents等方法。

    2.提取数据

    通过正则等方式,将HTML中的table标签提取出来,并转换为Array类型:

    function getTable($html) {  preg_match_all("/<table>[\s\S]*?<\/table>/i",$html,$table);  $table = $table[0][0];    $table = preg_replace("'<table[^>]*?>'si","",$table);    $table = preg_replace("'<tr[^>]*?>'si","",$table);    $table = preg_replace("'<td[^>]*?>'si","",$table);    $table = str_replace("</tr>","{tr}",$table);    $table = str_replace("</td>","{td}",$table);    //去掉 HTML 标记    $table = preg_replace("'<[/!]*?[^<>]*?>'si","",$table);    //去掉空白字符    $table = preg_replace("'([rn])[s]+'","",$table);    $table = str_replace(" ","",$table);    $table = str_replace(" ","",$table);    $table = explode('{tr}', $table);    array_pop($table);    foreach ($table as $key=>$tr) {      // 自己可添加对应的替换      $tr = str_replace("\n\n","",$tr);        $td = explode('{td}', $tr);        array_pop($td);        $td_array[] = $td;    }    return $td_array;}

    3.返回数据

    爬取整理数据并返回以便前端调用:

    $html = getUrlContent("https://s.weibo.com/top/summary?Refer=top_hot&topnav=1&wvr=6");$table = getTable($html);$table = array_slice($table,2); # 把前面多余部分截掉echo JSON_encode($table);

    至此,可将以上代码整合为一个php文件,设名为“weibo.php”,以待前端通过ajax的方式调用。

    三、数据可视化

    实不相瞒:前端咱不行,但四处搬砖、东拼西凑还是比较拿手的~ 现学了echarts.js,再看看网上前辈大佬们的演示,最终还是“凑”了出来。

    1.画柱状图

    利用echarts.js在画布上画出统计的柱状图:

    function CreateBar(keyWords,value){  //初始化echarts实例    var myChart = echarts.init(document.getElementById('chartmain'));    myChart.on('click',function(param){    window.open('#');  });  //指定图标的配置和数据    var option = {        title:{            text:''        },        tooltip:{},        grid:{          top:"15%",          left:"16%",          bottom:"5%"        },        legend:{            data:['热搜词']        },        xAxis:{        },        yAxis:{          data:keywords        },        series:[{            name:'搜索量',            type:'bar',            itemStyle: {                nORMal: {                    color: '#ff9406'                }          },            data:value        }]    };    myChart.setOption(option);}

    这里需要两个参数(两个Array),即热搜词和搜索量,而它们得通过ajax的方式向后端发送请求获取。

    2.ajax请求数据

    通过ajax的方式向后端发起请求(即之前提到的weibo.php),以获得数据:

    function GetData(){  $.ajax({    type: "post",        //数据提交方式(post/get)    url: "weibo.php",    //提交到的url    dataType: "json",    //返回的数据类型格式        success: function(msg){      //返回成功的回调函数      if(msg!=''){        var data = eval(msg); //将返回的json数据进行解析,并赋给data        var keywords = [];        var value = [];        for(var i=0; i < 20; i++){ // 取TOP20          keywords.push(data[i][1].split('\n')[0]);          value.push(Number(data[i][1].split('\n')[1]));        }        CreateBar(keywords.reverse(),value.reverse());        setInterval("GetData()",10000); // 间隔10S       }      },      error:function(msg){        //返回失败的回调函数        console.log(msg);        setInterval("GetData()",30000); // 间隔30S      }  });}

    注:这里用了**setInterval()**的方法来实现定时发送异步请求,以实现实时监控。

    四、效果展示

    经过不懈的尝试和修改,最后达到了一个还算比较满意的效果,大概就是这个样子啦:

    基于PHP如何实现微博热搜实时监控平台

    读到这里,这篇“基于PHP如何实现微博热搜实时监控平台”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网PHP编程频道。

    --结束END--

    本文标题: 基于PHP如何实现微博热搜实时监控平台

    本文链接: https://www.lsjlt.com/news/341391.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • 基于PHP实现微博热搜实时监控平台
      目录背景一、整体思路二、数据爬取1.获取HTML2.提取数据3.返回数据三、数据可视化1.画柱状图2.ajax请求数据四、效果展示写在最后背景 在学习、“脱发&rdquo...
      99+
      2022-11-13
    • 基于PHP如何实现微博热搜实时监控平台
      本文小编为大家详细介绍“基于PHP如何实现微博热搜实时监控平台”,内容详细,步骤清晰,细节处理妥当,希望这篇“基于PHP如何实现微博热搜实时监控平台”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、整体思路对于搜...
      99+
      2023-07-02
    • 如何实时捕捉社会热点?微博热搜数据监测系统-API接口
      随着互联网的诞生,信息海嘯迅猛而来,如何实时关注社会热点,新闻人物?成了捕捉社会舆情新的难点。 网络传播越来越复杂化,网络社交媒体平台也越来越多,对于信息监测专员们来说,媒体平台与主流舆情网站的信息监测难度也越来越大。那么,到底要如何快速...
      99+
      2023-10-28
      java 开发语言 php
    • 基于Java Agent的premain如何实现方法耗时监控
      这篇文章主要介绍“基于Java Agent的premain如何实现方法耗时监控”,在日常操作中,相信很多人在基于Java Agent的premain如何实现方法耗时监控问题上存在疑惑,小编查阅了各式资料,整理出简单好用的...
      99+
      2023-07-04
    • 基于Django的Admin后台如何实现定制简单监控页
      这篇文章主要介绍基于Django的Admin后台如何实现定制简单监控页,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!我们使用Django的Admin二次定制一个图形化界面,首先我们把语言设置为中文简体.修改:&nbs...
      99+
      2023-06-21
    • 如何解决基于Pinpoint对SpringCloud微服务项目实现全链路监控的问题
      这篇文章主要为大家展示了“如何解决基于Pinpoint对SpringCloud微服务项目实现全链路监控的问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决基于Pinpoint对Sprin...
      99+
      2023-06-29
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作