国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Python大數(shù)據(jù)期末/課程設(shè)計】動態(tài)爬取“縱橫中文網(wǎng)“小說排行榜數(shù)據(jù)并進行可視化處理 (flask框架/MySQL數(shù)據(jù)庫/echarts數(shù)據(jù)可視化)

這篇具有很好參考價值的文章主要介紹了【Python大數(shù)據(jù)期末/課程設(shè)計】動態(tài)爬取“縱橫中文網(wǎng)“小說排行榜數(shù)據(jù)并進行可視化處理 (flask框架/MySQL數(shù)據(jù)庫/echarts數(shù)據(jù)可視化)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

代寫C語言、C++、Java、Python、HTML、JavaScript、vue、MySQL相關(guān)編程作業(yè),
長期接單,信譽有保證,標價10-20每份,如有需要請加文章最下方QQ。

本文資源:https://download.csdn.net/download/weixin_47040861/89149396


1.題目要求

題目描述:

爬取“縱橫中文網(wǎng)”
1.利用爬蟲技術(shù)爬取完整的一千條數(shù)據(jù).
2.將爬取到的數(shù)據(jù)保件存到MySQL數(shù)據(jù)庫中
3.利用python web 任意框架做后臺api
4.利用js等技術(shù)動態(tài)渲染到HTML中
5.最少要有4個子頁面
6.每個頁面最少3個版塊
7.所編寫的頁面必須符合W3C標準和人為審美標準

2.視頻演示

【Python大數(shù)據(jù)期末/課程設(shè)計】動態(tài)爬取"縱橫中文網(wǎng)"小說排行榜數(shù)據(jù)并進行可視化處理 (flask框架/MySQL數(shù)據(jù)庫/echarts數(shù)據(jù)可視化)

3.實現(xiàn)流程

注意:該項目需要依靠MySQL數(shù)據(jù)庫運行,請保證您的電腦中已安裝了MySQL數(shù)據(jù)庫且正??捎?/strong>

該項目的主要目標是爬取小說網(wǎng)站"縱橫中文網(wǎng)"的排行榜數(shù)據(jù),然后對數(shù)據(jù)進行可視化處理

目標網(wǎng)站:小說排行榜,最新熱門小說排行榜,各類原創(chuàng)小說排行榜,縱橫中文小說網(wǎng)

項目的基本流程如下:創(chuàng)建flask服務(wù)器->向目標頁面發(fā)送請求,爬取數(shù)據(jù)->在數(shù)據(jù)庫中建表,將爬取到的數(shù)據(jù)處理后保存到數(shù)據(jù)庫中->編寫接口,響應(yīng)前端發(fā)送的請求->編寫前端請求,通過后端服務(wù)器獲取數(shù)據(jù)->將數(shù)據(jù)渲染到頁面中

1.創(chuàng)建服務(wù)器

接下來是每一步的實現(xiàn)過程以及項目的基本結(jié)構(gòu),

首先是創(chuàng)建服務(wù)器,在項目目錄下有三個Python文件,其中"create_flask.py"文件是服務(wù)器相關(guān)文件,與flask相關(guān)的代碼基本都在這個文件中,雙擊該文件后點擊運行即可啟動項目

【Python大數(shù)據(jù)期末/課程設(shè)計】動態(tài)爬取“縱橫中文網(wǎng)“小說排行榜數(shù)據(jù)并進行可視化處理 (flask框架/MySQL數(shù)據(jù)庫/echarts數(shù)據(jù)可視化),python,課程設(shè)計,pycharm,flask,mysql,echarts,javascript

2.請求數(shù)據(jù)

然后是請求數(shù)據(jù),首先在"creat_flask.py"文件的頭部有一個變量account,該參數(shù)中保存了MySQL數(shù)據(jù)庫的賬號、密碼以及地址,啟動項目前請先將該變量中的值修改為您自己的賬號和密碼

“create_flask.py”文件頭部的account對象:

【Python大數(shù)據(jù)期末/課程設(shè)計】動態(tài)爬取“縱橫中文網(wǎng)“小說排行榜數(shù)據(jù)并進行可視化處理 (flask框架/MySQL數(shù)據(jù)庫/echarts數(shù)據(jù)可視化),python,課程設(shè)計,pycharm,flask,mysql,echarts,javascript

由于服務(wù)器每次啟動后最先訪問的都是初始路徑,即路由"/",所以我將爬取和保存數(shù)據(jù)的函數(shù)都放在了該路由下,每當用戶訪問路由時會先爬取數(shù)據(jù),爬取完成后再顯示頁面:

【Python大數(shù)據(jù)期末/課程設(shè)計】動態(tài)爬取“縱橫中文網(wǎng)“小說排行榜數(shù)據(jù)并進行可視化處理 (flask框架/MySQL數(shù)據(jù)庫/echarts數(shù)據(jù)可視化),python,課程設(shè)計,pycharm,flask,mysql,echarts,javascript

初始路徑下的函數(shù):

【Python大數(shù)據(jù)期末/課程設(shè)計】動態(tài)爬取“縱橫中文網(wǎng)“小說排行榜數(shù)據(jù)并進行可視化處理 (flask框架/MySQL數(shù)據(jù)庫/echarts數(shù)據(jù)可視化),python,課程設(shè)計,pycharm,flask,mysql,echarts,javascript

其中請求函數(shù)全部保存在"get_info.py"文件中,由于不同排行榜的請求方式略有不同,所以分成了5個函數(shù),函數(shù)接收保存著數(shù)據(jù)庫賬號和密碼的參數(shù)account,函數(shù)內(nèi)部的url變量和header變量保存的則是數(shù)據(jù)請求地址和請求頭

"get_info.py"文件中的請求函數(shù):

【Python大數(shù)據(jù)期末/課程設(shè)計】動態(tài)爬取“縱橫中文網(wǎng)“小說排行榜數(shù)據(jù)并進行可視化處理 (flask框架/MySQL數(shù)據(jù)庫/echarts數(shù)據(jù)可視化),python,課程設(shè)計,pycharm,flask,mysql,echarts,javascript

然后項目會使用Python的requests庫提供的方法向頁面發(fā)送請求,若請求成功(res.status_code==200)則調(diào)用建表函數(shù),并將獲取到的數(shù)據(jù)傳遞給函數(shù)以便存儲:

【Python大數(shù)據(jù)期末/課程設(shè)計】動態(tài)爬取“縱橫中文網(wǎng)“小說排行榜數(shù)據(jù)并進行可視化處理 (flask框架/MySQL數(shù)據(jù)庫/echarts數(shù)據(jù)可視化),python,課程設(shè)計,pycharm,flask,mysql,echarts,javascript
?

2.保存數(shù)據(jù)

想要保存數(shù)據(jù),首先要在數(shù)據(jù)庫中創(chuàng)建對應(yīng)的表,然后將數(shù)據(jù)插入到表中,這里我將建表和插入函數(shù)整合到了一起,所有的建表和保存數(shù)據(jù)函數(shù)均在“create_list.py”文件中,函數(shù)接收兩個參數(shù),分別為數(shù)據(jù)庫數(shù)據(jù)相關(guān)數(shù)據(jù)和爬取到的數(shù)據(jù),當調(diào)用該函數(shù)時,函數(shù)首先會根據(jù)傳入的數(shù)據(jù)庫數(shù)據(jù)與后臺數(shù)據(jù)庫建立連接:

【Python大數(shù)據(jù)期末/課程設(shè)計】動態(tài)爬取“縱橫中文網(wǎng)“小說排行榜數(shù)據(jù)并進行可視化處理 (flask框架/MySQL數(shù)據(jù)庫/echarts數(shù)據(jù)可視化),python,課程設(shè)計,pycharm,flask,mysql,echarts,javascript

然后檢查當前數(shù)據(jù)庫中是否存在對應(yīng)的表,若存在則清空,若不存在則創(chuàng)建,這一步的主要目的是為了方便更新數(shù)據(jù)庫內(nèi)容:

【Python大數(shù)據(jù)期末/課程設(shè)計】動態(tài)爬取“縱橫中文網(wǎng)“小說排行榜數(shù)據(jù)并進行可視化處理 (flask框架/MySQL數(shù)據(jù)庫/echarts數(shù)據(jù)可視化),python,課程設(shè)計,pycharm,flask,mysql,echarts,javascript

最后Python的"mysql.connector"庫提供了一個非常方便的函數(shù)executemany,該函數(shù)可以通過傳入的執(zhí)行命令格式和數(shù)據(jù)批量向數(shù)據(jù)庫中插入數(shù)據(jù),而不需要逐個插入:

【Python大數(shù)據(jù)期末/課程設(shè)計】動態(tài)爬取“縱橫中文網(wǎng)“小說排行榜數(shù)據(jù)并進行可視化處理 (flask框架/MySQL數(shù)據(jù)庫/echarts數(shù)據(jù)可視化),python,課程設(shè)計,pycharm,flask,mysql,echarts,javascript

然后將操作提交給數(shù)據(jù)庫即可完成數(shù)據(jù)的保存,保存結(jié)果如下:

【Python大數(shù)據(jù)期末/課程設(shè)計】動態(tài)爬取“縱橫中文網(wǎng)“小說排行榜數(shù)據(jù)并進行可視化處理 (flask框架/MySQL數(shù)據(jù)庫/echarts數(shù)據(jù)可視化),python,課程設(shè)計,pycharm,flask,mysql,echarts,javascript

該項目一共爬取了五個排行榜,每個排行榜200條數(shù)據(jù),共1000條數(shù)據(jù)

3.建立接口

完成數(shù)據(jù)的保存后,下一步就需要編寫路由接口來連接數(shù)據(jù)庫與前端頁面,這里我們回到"create_flask.py"文件中,在數(shù)據(jù)讀取和保存完成后我設(shè)置了路由從"/"跳轉(zhuǎn)至"/monthly",本質(zhì)上是將月票頁面當做主頁使用:

【Python大數(shù)據(jù)期末/課程設(shè)計】動態(tài)爬取“縱橫中文網(wǎng)“小說排行榜數(shù)據(jù)并進行可視化處理 (flask框架/MySQL數(shù)據(jù)庫/echarts數(shù)據(jù)可視化),python,課程設(shè)計,pycharm,flask,mysql,echarts,javascript

在該項目中使用的返回函數(shù)主要有兩個,一個是返回頁面的render_template()函數(shù),另一個則是返回數(shù)據(jù)的jsonify()函數(shù),接下來我來講講這兩個路由函數(shù)的作用:

【Python大數(shù)據(jù)期末/課程設(shè)計】動態(tài)爬取“縱橫中文網(wǎng)“小說排行榜數(shù)據(jù)并進行可視化處理 (flask框架/MySQL數(shù)據(jù)庫/echarts數(shù)據(jù)可視化),python,課程設(shè)計,pycharm,flask,mysql,echarts,javascript

首先是render_template()函數(shù),該函數(shù)用于向前端返回頁面,這里需要說明的是,在flask框架中前端頁面并不是直接渲染的,而是前端頁面通過訪問后端路由,由路由返回給前端頁面的,例如這里的monthly頁面,在網(wǎng)頁中輸入后綴帶monthly的路徑時會向后端對應(yīng)的"/montlhy"路由請求頁面內(nèi)容,路由再利用render_template()函數(shù)在當前目錄下的"templates"文件中找到對應(yīng)的HTML頁面并返回給前端

【Python大數(shù)據(jù)期末/課程設(shè)計】動態(tài)爬取“縱橫中文網(wǎng)“小說排行榜數(shù)據(jù)并進行可視化處理 (flask框架/MySQL數(shù)據(jù)庫/echarts數(shù)據(jù)可視化),python,課程設(shè)計,pycharm,flask,mysql,echarts,javascript

【Python大數(shù)據(jù)期末/課程設(shè)計】動態(tài)爬取“縱橫中文網(wǎng)“小說排行榜數(shù)據(jù)并進行可視化處理 (flask框架/MySQL數(shù)據(jù)庫/echarts數(shù)據(jù)可視化),python,課程設(shè)計,pycharm,flask,mysql,echarts,javascript

【Python大數(shù)據(jù)期末/課程設(shè)計】動態(tài)爬取“縱橫中文網(wǎng)“小說排行榜數(shù)據(jù)并進行可視化處理 (flask框架/MySQL數(shù)據(jù)庫/echarts數(shù)據(jù)可視化),python,課程設(shè)計,pycharm,flask,mysql,echarts,javascript

而數(shù)據(jù)也是相同的流程,區(qū)別在于數(shù)據(jù)需要在JavaScript文件中通過XMLHttpRequest()向后端發(fā)送請求,請求到的數(shù)據(jù)并不會直接渲染到頁面,而是返回到JavaScript文件中:

【Python大數(shù)據(jù)期末/課程設(shè)計】動態(tài)爬取“縱橫中文網(wǎng)“小說排行榜數(shù)據(jù)并進行可視化處理 (flask框架/MySQL數(shù)據(jù)庫/echarts數(shù)據(jù)可視化),python,課程設(shè)計,pycharm,flask,mysql,echarts,javascript

【Python大數(shù)據(jù)期末/課程設(shè)計】動態(tài)爬取“縱橫中文網(wǎng)“小說排行榜數(shù)據(jù)并進行可視化處理 (flask框架/MySQL數(shù)據(jù)庫/echarts數(shù)據(jù)可視化),python,課程設(shè)計,pycharm,flask,mysql,echarts,javascript

不同的數(shù)據(jù)需喲的接口也是不同的

4.編寫請求

在建立好后端接口后,下一步就是在前端發(fā)送請求以獲取數(shù)據(jù),由于一個頁面中使用的數(shù)據(jù)不止一個,而數(shù)據(jù)的請求之間會有執(zhí)行沖突,所以這里使用了promise來異步發(fā)送請求,以確保請求間不會沖突,

// 封裝一個函數(shù)用于發(fā)送異步請求并返回 Promise 對象
function fetchData(url) {
    return new Promise(function (resolve, reject) {
        var xhr = new XMLHttpRequest();
        xhr.open('GET', url, true);
        xhr.onload = function () {
            if (xhr.status >= 200 && xhr.status < 300) {
                var data = JSON.parse(xhr.responseText);
                resolve(data); // 請求成功,返回數(shù)據(jù)
            } else {
                reject(xhr.statusText); // 請求失敗,返回錯誤信息
            }
        };
        xhr.onerror = function () {
            reject(xhr.statusText); // 請求錯誤,返回錯誤信息
        };
        xhr.send();
    });
}

5.渲染頁面

前端在獲取數(shù)據(jù)后將數(shù)據(jù)傳遞給echarts函數(shù),然后渲染到頁面中:

【Python大數(shù)據(jù)期末/課程設(shè)計】動態(tài)爬取“縱橫中文網(wǎng)“小說排行榜數(shù)據(jù)并進行可視化處理 (flask框架/MySQL數(shù)據(jù)庫/echarts數(shù)據(jù)可視化),python,課程設(shè)計,pycharm,flask,mysql,echarts,javascript

項目共渲染了6個頁面,5個榜單頁面和1個總頁面,

在榜單頁面中鼠標懸停在餅圖上時會顯示數(shù)據(jù)量和餅圖所占百分比:

【Python大數(shù)據(jù)期末/課程設(shè)計】動態(tài)爬取“縱橫中文網(wǎng)“小說排行榜數(shù)據(jù)并進行可視化處理 (flask框架/MySQL數(shù)據(jù)庫/echarts數(shù)據(jù)可視化),python,課程設(shè)計,pycharm,flask,mysql,echarts,javascript

而總頁面中展示了各榜單的部分統(tǒng)計數(shù)據(jù):

【Python大數(shù)據(jù)期末/課程設(shè)計】動態(tài)爬取“縱橫中文網(wǎng)“小說排行榜數(shù)據(jù)并進行可視化處理 (flask框架/MySQL數(shù)據(jù)庫/echarts數(shù)據(jù)可視化),python,課程設(shè)計,pycharm,flask,mysql,echarts,javascript

↓如對項目有任何問題或需要,請加下方QQ↓文章來源地址http://www.zghlxwxcb.cn/news/detail-857313.html

到了這里,關(guān)于【Python大數(shù)據(jù)期末/課程設(shè)計】動態(tài)爬取“縱橫中文網(wǎng)“小說排行榜數(shù)據(jù)并進行可視化處理 (flask框架/MySQL數(shù)據(jù)庫/echarts數(shù)據(jù)可視化)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包