版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第基于PHP實現(xiàn)微博熱搜實時監(jiān)控平臺目錄背景一、整體思路二、數(shù)據(jù)爬取1.獲取HTML2.提取數(shù)據(jù)3.返回數(shù)據(jù)三、數(shù)據(jù)可視化1.畫柱狀圖2.ajax請求數(shù)據(jù)四、效果展示寫在最后
背景
在學(xué)習(xí)、脫發(fā)之余,便是去微博看看有沒有發(fā)生什么有趣的事情,或是了解一下正在發(fā)生著哪些大事,亦或是某些讓我久久不能平復(fù)的事
Whatever~因為重點并不是這個
重點是,當(dāng)我去搜微博熱搜的時候,是這樣的:
界面需要一直手動刷新,而且我簡單搜了一下,似乎是沒有相關(guān)的實時統(tǒng)計圖的,于是我嘗試著自己寫一個。
(ps.要是有哪位大佬知道有現(xiàn)成的歡迎留言哦,定將感激涕零~)
一、整體思路
一個簡單的想法在我嬸嬸的腦海里浮現(xiàn)了出來:首先搜集數(shù)據(jù),然后通過一個web頁面來進行統(tǒng)計展示。
對于搜集數(shù)據(jù)當(dāng)然是寫個爬蟲就好了,首先腦里閃過的是用python,但是人總是喜歡嘗試下新東西,于是我選擇試試用PHP來寫爬蟲。所以,大體框架便出來了:
二、數(shù)據(jù)爬取
1.獲取HTML
PHP爬取微博熱搜頁面,得到HTML源碼:
functiongetUrlContent($url){//通過url獲取html內(nèi)容
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/4.0(compatible;MSIE7.0;WindowsNT6.1)");
curl_setopt($ch,CURLOPT_HEADER,1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$output=curl_exec($ch);
curl_close($ch);
return$output;
}
當(dāng)然,也可以直接用file_get_contents等方法。
2.提取數(shù)據(jù)
通過正則等方式,將HTML中的table標(biāo)簽提取出來,并轉(zhuǎn)換為Array類型:
functiongetTable($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標(biāo)記
$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($tableas$key=$tr){
//自己可添加對應(yīng)的替換
$tr=str_replace("\n\n","",$tr);
$td=explode('{td}',$tr);
array_pop($td);
$td_array[]=$td;
return$td_array;
}
3.返回數(shù)據(jù)
爬取整理數(shù)據(jù)并返回以便前端調(diào)用:
$html=getUrlContent("/top/summaryRefer=top_hottopnav=1wvr=6");
$table=getTable($html);
$table=array_slice($table,2);#把前面多余部分截掉
echojson_encode($table);
至此,可將以上代碼整合為一個php文件,設(shè)名為weibo.php,以待前端通過ajax的方式調(diào)用。
三、數(shù)據(jù)可視化
實不相瞞:前端咱不行,但四處搬磚、東拼西湊還是比較拿手的~現(xiàn)學(xué)了echarts.js,再看看網(wǎng)上前輩大佬們的演示,最終還是湊了出來。
1.畫柱狀圖
利用echarts.js在畫布上畫出統(tǒng)計的柱狀圖:
functionCreateBar(keywords,value){
//初始化echarts實例
varmyChart=echarts.init(document.getElementById('chartmain'));
myChart.on('click',function(param){
window.open('#');
//指定圖標(biāo)的配置和數(shù)據(jù)
varoption={
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);
}
這里需要兩個參數(shù)(兩個Array),即熱搜詞和搜索量,而它們得通過ajax的方式向后端發(fā)送請求獲取。
2.ajax請求數(shù)據(jù)
通過ajax的方式向后端發(fā)起請求(即之前提到的weibo.php),以獲得數(shù)據(jù):
functionGetData(){
$.ajax({
type:"post",//數(shù)據(jù)提交方式(post/get)
url:"weibo.php",//提交到的url
dataType:"json",//返回的數(shù)據(jù)類型格式
success:function(msg){
//返回成功的回調(diào)函數(shù)
if(msg!=''){
vardata=eval(msg);//將返回的json數(shù)據(jù)進行解析,并賦給data
varkeywords=[];
varvalue=[];
for(vari=0;ii++){//取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){
//返回失敗的回調(diào)函數(shù)
console.log(msg);
setInterval("GetData()",30000);//間隔30S
}
注:這里用了**setInterval()**的方法來實現(xiàn)定時發(fā)送異步請求,以實現(xiàn)實時監(jiān)控。
四、效果展示
經(jīng)過不懈的嘗試和修改,最后達到了一個還算比較滿意的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鋼筋施工物資管理方案
- 鋼筋分項工程驗收標(biāo)準(zhǔn)方案
- 未來五年傘、手杖、鞭子、馬鞭及其零件企業(yè)ESG實踐與創(chuàng)新戰(zhàn)略分析研究報告
- 未來五年工程承包行業(yè)市場營銷創(chuàng)新戰(zhàn)略制定與實施分析研究報告
- 生態(tài)資源循環(huán)利用生產(chǎn)項目技術(shù)方案
- 城鎮(zhèn)供水鞏固提升項目環(huán)境影響報告書
- 排水設(shè)施環(huán)保材料應(yīng)用方案
- 河道泥沙管理與治理技術(shù)方案
- 2025至2030中國征信標(biāo)準(zhǔn)化進程與行業(yè)規(guī)范發(fā)展研究報告
- 2025-2030新材料應(yīng)用行業(yè)市場競爭格局技術(shù)創(chuàng)新發(fā)展分析評估研究報告
- 醫(yī)院醫(yī)療保險費用審核制度
- 村衛(wèi)生室醫(yī)療質(zhì)量相關(guān)管理制度
- 非遺傳承人激勵機制探索-深度研究
- 中小學(xué)校園中匹克球推廣策略與實踐研究
- 2024年世界職業(yè)院校技能大賽高職組“體育活動設(shè)計與實施組”賽項考試題庫(含答案)
- 高中地理選擇性必修一(湘教版)期末檢測卷02(原卷版)
- 滬教版九年級化學(xué)上冊(上海版)全套講義
- 三角函數(shù)圖像變化課件
- 《內(nèi)存條知識培訓(xùn)》課件
- 人教版(2024)七年級地理期末復(fù)習(xí)必背考點提綱
- 廣東省深圳市南山區(qū)2023-2024學(xué)年四年級上學(xué)期數(shù)學(xué)期末教學(xué)質(zhì)量監(jiān)測試卷
評論
0/150
提交評論