目錄標題
- 預覽
- 一、實驗目的
- 二、設備與環境
- 三、實驗內容
- 四、實驗結果及分析
- 1、實驗運行程序及分析
- 2、運行結果
- 3、心得體會
- 原始碼領取
預覽




一、實驗目的
通過該實驗把Python語言中基本知識和第三方庫得到綜合應用,完成可視化熱搜榜和國內疫情新增圖,提高學生的編程能力和分析問題、解決問題的能力,
二、設備與環境
硬體:多媒體計算機 軟體:Windows7或Windows10 作業系統、Python3.X 軟體,
三、實驗內容
1、 實驗內容
① 使用python web框架flask搭建web專案
② 使用爬蟲技術完成資訊獲取
③ 使用python基礎知識庫完成資料轉換并做資料分析
④ 使用jieba庫對熱搜做詞頻分析
⑤ 使用jQuery框架和HTML、css、JavaScript和echarts完成前端頁面設計
2、最后結果輸出,要求:輸出格式要界面直觀、清晰大方、格式規范,
四、實驗結果及分析
1、實驗運行程序及分析
#構建首頁頁面路由路徑,并加載index.html頁面和傳送資料
@app.route('/Hot_Bot')
def Hot_Bot():
data=hotBot()
return render_template('index.html',form=data,title=data.title)
#構建詞頻頁面和路由路徑,并加載test.html頁面和傳送資料
@app.route('/cipin')
def cipin():
data=spider.sum_hot_word()
print(data)
return render_template("test.html",form=data)
爬蟲階段以微博和知乎為例:
def weibo():
hot=[]
name=[]
value=[]
url='https://weibo.com/ajax/statuses/hot_band'
header={
'cookie': 'UOR=mp.weixin.qq.com,s.weibo.com,mp.weixin.qq.com; SINAGLOBAL=753710676249.8569.1621750150925; SUB=_2AkMXpEktf8NxqwJRmP4Tz2zkZYh3wwHEieKh-Lj2JRMxHRl-yT9jqhAztRB6PCRnwgM0JsVYPTwi5DuGI3N0YpgPChkI; SUBP=0033WrSXqPxfM72-Ws9jqgMF55529P9D9WhpfXwV9S99niOF07XLn8y7; WBPSESS=kErNolfXeoisUDB3d9TFH-1YhWD5pAkKF4olmR2WdEz_79spnMzQbf2Kt92964Tdvd3fcKY1c8a_Sd6CbCiw6P0wyFuEu1GQri6NrQ6_oBLuAYd8HR3zZI8_M6QfSsHD; ULV=1635245354703:3:1:1:6287771993091.978.1635245354698:1626916415441; XSRF-TOKEN=_LdujowesXEM4itQidVLNlJj',
'accept - encoding': 'gzip, deflate, br',
'user - agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36',
'referer': 'https://www.baidu.com/link?url=oBKJ9ZCKdgcrDL-WKTnXNgHhk2kNw6JfV0tShTgwv3KYkUracwd2FG6kuIrShm5b2aJDHZKZVgYG8QgZWSM-Ha&wd=&eqid=f74c877700049c31000000066177abe3'
}
req = requests.get(url,headers=header).text
soup = BeautifulSoup(req, "lxml")
#hot_word = re.findall('word.*?,',req)
hot_word=json.loads(req)['data']['band_list']
for i in range(len(hot_word)):
hot.append({"name":hot_word[i]['word'][0:10],"value":hot_word[i]["num"]})
name.append(hot_word[i]['word'])
value.append(hot_word[i]["num"])
return hot[0:3],name,value
def zhihu():
hot = []
browser=webdriver.Chrome('chromedriver.exe')
browser.get('https://www.zhihu.com/topsearch')
browser.refresh()
elements=browser.find_elements_by_class_name('TopSearchMain-title')
for i in elements:
hot.append(i.text)
return hot
以詞頻分析為例展示部分前端頁面代碼:
<div id="main" style="width: 600px;height: 800px;"></div>
<script>
var ectest = echarts.init(document.getElementById("main"));
var ec_right2_option = {
// backgroundColor: '#515151',
title: {
text: "今日疫情熱搜",
textStyle: {
color: 'white',
},
left: 'left'
},
tooltip: {
show: false
},
series: [{
type: 'wordCloud',
// drawOutOfBound:true,
gridSize: 1,
sizeRange: [12, 55],
rotationRange: [-45, 0, 45, 90],
// maskImage: maskImage,
textStyle: {
normal: {
color: function () {
return 'rgb(' +
Math.round(Math.random() * 255) +
', ' + Math.round(Math.random() * 255) +
', ' + Math.round(Math.random() * 255) + ')'
}
}
},
right: null,
bottom: null,
data: ddd
}]
}
ectest.setOption(ec_right2_option);
</script>
2、運行結果
下面展示主頁面:
中間是國內疫情新增圖并動態顯示人數,左上為百度熱搜榜top3、左下為微博熱搜榜top3、中上為當天天氣情況、右上為微博和百度熱搜熱度對比,右下為三大平臺的熱搜地址和詞頻統計,
下圖為百度、微博、知乎三大平臺的熱搜詞頻統計圖,

3、心得體會
通過本次課程設計我又溫習了一次python的一些基礎知識而且對前端技術有了進一步的了解使我更加清晰了以后的方向,而且也認識到在構建專案的時候對整體架構的重要性,最重要的是更深的認識到python技術對于構建網站的優缺點和python語言的實用性,對以后的發展起到了良好的引導作用,同時也認識到了自己的薄弱項,比如在前端頁面設計的時候對jQuery和JavaScript技術的應用很不熟練還有對echarts的圖表選擇也比較簡單,在選取疫情城市坐標標記的時候對symbolSize
的設定也沒有把控好直接導致了最終產品沒有達到預期效果,而且對python的基礎知識掌握也不是特別的牢固對于jieba庫的使用還有待提高,后續我會補上薄弱項,為爭取做一名全堆疊技術人員而奮斗,
原始碼領取
這里有python,Java學習資料還有有有趣好玩的編程專案,更有難尋的各種資源,反正看看也不虧, 回復可視化熱搜榜和疫情新增圖
特別介紹
📣小白練手專欄,適合剛入手的新人歡迎訂閱編程小白進階
📣python有趣練手專案里面包括了像《機器人尬聊》《惡搞程式》這樣的有趣文章,可以讓你快樂學python練手專案專欄
📣另外想學JavaWeb進廠的同學可以看看這個專欄:傳送們
📣這是個面試和考研的演算法練習我們一起加油上岸之路
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/355342.html
標籤:python
上一篇:python 自動發送QQ郵箱
下一篇:難頂!面試官問我G1垃圾收集器
