亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Flask和爬蟲的書籍循環(huán)平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)

        2021-09-14 09:08:18李岳松郭史進(jìn)劉浩宇
        科技與創(chuàng)新 2021年17期
        關(guān)鍵詞:爬蟲書本頁面

        燕 妮,李岳松,郭史進(jìn),劉浩宇

        (中國礦業(yè)大學(xué)(北京)機(jī)電與信息工程學(xué)院,北京100089)

        閱讀是人類進(jìn)步的階梯,在新時(shí)代倡導(dǎo)全民閱讀,建設(shè)書香社會(huì)已經(jīng)成為一項(xiàng)必不可少的文化戰(zhàn)略。隨著近些年高校不斷擴(kuò)招,教學(xué)需求不斷增長以及社會(huì)呼吁環(huán)保理念,新舊二手書的循環(huán)利用已經(jīng)迫在眉睫。基于此,本次課題基于Python的Flask框架和爬蟲技術(shù)手段,開發(fā)了一款公益性質(zhì)的書本循環(huán)平臺(tái),為供需雙方搭載了聯(lián)系的紐帶,學(xué)生們可以把閑置圖書上傳到這個(gè)平臺(tái),也可以在平臺(tái)構(gòu)建自己的心愿書單。此次課題讓空閑的書本循環(huán)再利用,改善了資源的浪費(fèi)情況,培養(yǎng)了學(xué)生們勤儉環(huán)保的優(yōu)秀美德。

        1 需求分析與系統(tǒng)設(shè)計(jì)

        1.1 書本循環(huán)平臺(tái)的需求分析

        書本循環(huán)平臺(tái)的用戶主要分為三大類,包括管理員、登錄用戶和游客。書本循環(huán)平臺(tái)主要實(shí)現(xiàn)了以下功能:登錄功能、書本總覽功能、詳情信息展示功能、贈(zèng)送清單功能、心愿單功能。登錄功能包括注冊(cè)、登錄和注銷;書本總覽功能在首頁展示了一部分圖書;詳情信息展示功能可以查看到本書的作者、出版年月日和書本簡介等信息并另一側(cè)推送相關(guān)書目。贈(zèng)送清單功能展示了用戶可以贈(zèng)送的書本清單,本平臺(tái)區(qū)別于其他平臺(tái)的地方是不需要拍照上傳等復(fù)雜工序,而是采用搜索書名或者ISBN編號(hào)實(shí)現(xiàn)快速錄入贈(zèng)送清單,極大提升了用戶的體驗(yàn);心愿單功能可以列出用戶想獲得的書本信息,同樣采取搜索方式,點(diǎn)亮?xí)鞠路降男坌木涂商砑又列脑盖鍐?。?dāng)用戶訪問平臺(tái)時(shí)可以選擇注冊(cè)登錄或者游客身份,游客身份只能看到首頁展示的書目總覽及登錄后可查看自己的可贈(zèng)送清單和心愿單。系統(tǒng)總用例圖如圖1所示。

        圖1 總用例圖

        1.2 書本循環(huán)平臺(tái)的系統(tǒng)設(shè)計(jì)

        1.2.1 書本循環(huán)平臺(tái)的概要設(shè)計(jì)

        前后端都使用經(jīng)典的MVC設(shè)計(jì)模式[1]。MVC模式分離了視圖層和模型層,并通過控制層相連接。View層主要負(fù)責(zé)后臺(tái)數(shù)據(jù)的輸出、頁面的呈現(xiàn)和人機(jī)交互工作。Controller層用來處理系統(tǒng)業(yè)務(wù),翻譯用戶輸入的信息,并按照用戶輸入生成操作模型傳送給Model層,以此滿足用戶需求。Model層負(fù)責(zé)管理行為和數(shù)據(jù),行為表示更新來自Controller的狀態(tài),數(shù)據(jù)與數(shù)據(jù)庫相連接,根據(jù)請(qǐng)求加載后臺(tái)數(shù)據(jù),完成業(yè)務(wù)邏輯,對(duì)頁面進(jìn)行渲染。

        本課題設(shè)計(jì)的MVC書本循環(huán)平臺(tái)工程目錄結(jié)構(gòu)圖如圖2所示。

        圖2 書本循環(huán)平臺(tái)工程目錄結(jié)構(gòu)圖

        common文件包括libs和models文件,存放公共使用的函數(shù)和類[2];config文件是整個(gè)工程不同環(huán)境的配置文件,例如基礎(chǔ)配置、本地配置和生產(chǎn)環(huán)境配置;controllers文件內(nèi)放置用戶登錄和書目信息管理代碼;interceptors是對(duì)運(yùn)行過程中異常處理的編寫;jobs文件夾主要存放爬蟲代碼,包括定時(shí)爬蟲和保存從html中獲得的信息;static文件是靜態(tài)文件,包括前端所需的CSS、JS等文件;templates是模板存放文件夾;application對(duì)全局變量類管理;manager是入口文件,啟動(dòng)整個(gè)工程;requirement.txt說明這個(gè)工程所用到的庫,方便后期維護(hù)和管理;www文件是路由核心文件。本MVC框架符合Web開發(fā)的需求和特點(diǎn),它對(duì)項(xiàng)目進(jìn)行了合理分工,保證各個(gè)模塊同時(shí)啟動(dòng),互不影響,開發(fā)效率顯著提高,節(jié)約了人力和時(shí)間成本。在開發(fā)Web項(xiàng)目時(shí),使用MVC框架便于后期運(yùn)營和維護(hù),方便系統(tǒng)化管理項(xiàng)目[3]。

        1.2.2 書本循環(huán)平臺(tái)的數(shù)據(jù)庫設(shè)計(jì)

        數(shù)據(jù)庫設(shè)計(jì)是后端管理必不可少的一步,好的數(shù)據(jù)庫設(shè)計(jì)在特定的應(yīng)用環(huán)境里可以起到事半功倍的效果。將有效的數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫中,以此滿足用戶的各項(xiàng)需求。本次課題采用Mysql數(shù)據(jù)庫服務(wù)和navicat可視化工具,主要設(shè)計(jì)了兩個(gè)表單:登錄注冊(cè)功能需要的user表單和書目管理所用到的book表單。登錄注冊(cè)模塊的數(shù)據(jù)庫設(shè)計(jì),表名為user。字段包括id序號(hào)主鍵、nickname昵稱、login_name登錄用戶名、login_pwd登錄用戶密碼、login_salt登錄密碼隨機(jī)字符串、status狀態(tài)(0:無效,1:有效)、updated_time最后一次更新時(shí)間、creatd_time插入時(shí)間。

        書目管理系列用到的數(shù)據(jù)庫如表1所示,表名為book。

        表1 書目管理系統(tǒng)的數(shù)據(jù)庫

        2 系統(tǒng)實(shí)現(xiàn)

        2.1 書本循環(huán)平臺(tái)的實(shí)現(xiàn)環(huán)境

        書本循環(huán)平臺(tái)的整體框架[4]如圖3所示。

        圖3 書本循環(huán)平臺(tái)整體架構(gòu)圖

        Python計(jì)算機(jī)編程語言自20世紀(jì)90年代誕生以來,憑借其簡潔、規(guī)范、可讀性強(qiáng)已經(jīng)被廣泛運(yùn)用于腳本編寫和Web開發(fā)等領(lǐng)域[5],Python語言既支持面向?qū)ο缶幊桃仓С置嫦蜻^程編程,它不僅有豐富的準(zhǔn)庫還擁有很多第三方庫,這使得開發(fā)人員使用Python可以便捷地解決系列融合問題,使互聯(lián)網(wǎng)產(chǎn)品易于維護(hù)和迭代。本次課題主要的編譯器是Pycharm,其自帶的調(diào)試功能、自動(dòng)整理代碼格式、歷史提交回滾等功能幫助開發(fā)人員提高了開發(fā)效率。開發(fā)框架選擇的是Flask框架,是一個(gè)輕量級(jí)Web開發(fā)框架,功能強(qiáng)大且兼容其他庫來實(shí)現(xiàn)開發(fā)需求,它靈活且可擴(kuò)展性強(qiáng)[6],Werkzeug和模板引擎Jinja是Flask的核心應(yīng)用。先將Flask實(shí)例化,接受一個(gè)name參數(shù),用戶在瀏覽器前端做出指令,發(fā)送HTTP請(qǐng)求,將請(qǐng)求傳送回服務(wù)器,F(xiàn)lask用werkzeug做出路由分發(fā),為每個(gè)Url找到對(duì)應(yīng)的視圖函數(shù),接著Flask調(diào)用視圖函數(shù)進(jìn)行相應(yīng)操作,再將響應(yīng)結(jié)果返回客戶端,并將數(shù)據(jù)渲染到頁面上,以此完成一次程序運(yùn)行。

        Nginx是輕量級(jí)Web服務(wù)器,適用于高并發(fā)連接且內(nèi)存消耗少,可供跨平臺(tái)多個(gè)開發(fā)系統(tǒng)使用[7],是本次課題服務(wù)器選擇方面的不二法門。由于windows系統(tǒng)不支持uwsgi插件,因此需要tornado插件來配合部署高并發(fā)架構(gòu)。在Flask框架中,路由的設(shè)置需使用route屬性,這種方式是默認(rèn)使用get請(qǐng)求,如果需要post請(qǐng)求則需要在列表容器methods中特別設(shè)定。當(dāng)項(xiàng)目較大時(shí),需要的視圖函數(shù)會(huì)很多,此時(shí)需要使用藍(lán)圖Blueprint來區(qū)分模塊,這樣也有利于后期的代碼維護(hù)。

        前端部分采用bootstrap前端開發(fā)框架,可使前端開發(fā)更加迅速簡單。toC比較注重交互,前端采用bootstrap響應(yīng)式布局,以及骨架圖初始化呈現(xiàn)未加載數(shù)據(jù)頁面,響應(yīng)式布局對(duì)頁面縮放拖拽特性友好,頁面應(yīng)該有能力去自動(dòng)響應(yīng)用戶的設(shè)備環(huán)境,同時(shí)會(huì)考慮一些不同瀏覽器之間的兼容性。另一方面使用模版引擎渲染技術(shù),利用正則表達(dá)式分解出普通字符串和模板標(biāo)識(shí)符,將模版表達(dá)式替換為瀏覽器語言表達(dá)式,模版引擎將數(shù)據(jù)和頁面分離,可以通過變量更新頁面,提高代碼復(fù)用擴(kuò)展能力,并且可以在頁面中寫入一些具體邏輯,方便渲染。網(wǎng)頁調(diào)試工具可以采用chrome插件類產(chǎn)品,可以發(fā)送所有類型請(qǐng)求的postman進(jìn)行接口測(cè)試工作。

        書籍清單主要依靠爬蟲技術(shù)和正則表達(dá)式獲得。一只爬蟲可以從目標(biāo)網(wǎng)頁的html中提取開發(fā)者的需求內(nèi)容,以及和網(wǎng)頁進(jìn)行交互。本次課題使用的是BeautifulSoup庫,用來解析html,但在代碼編寫時(shí)要注意查看源碼的編碼方式,加以解碼[8]。之后將爬到的數(shù)據(jù)按標(biāo)準(zhǔn)化格式傳遞給model業(yè)務(wù)邏輯層,邏輯層使用正則表達(dá)式和第三方庫對(duì)數(shù)據(jù)進(jìn)行清洗與封裝,并存儲(chǔ)到數(shù)據(jù)庫中。設(shè)計(jì)好的數(shù)據(jù)庫將用于存儲(chǔ)用戶的賬號(hào)密碼,并使用md5加密[9]保護(hù)用戶的隱私性。書單查詢、修改和新增等操作也是基于數(shù)據(jù)庫進(jìn)行的。

        2.2 書本循環(huán)平臺(tái)的模塊實(shí)現(xiàn)

        登錄模塊主要分為注冊(cè)和登錄兩部分,點(diǎn)擊注冊(cè)按鈕會(huì)跳轉(zhuǎn)到注冊(cè)頁面,用戶輸入信息會(huì)判斷其完整度和格式標(biāo)準(zhǔn)度,給用戶相應(yīng)的反饋,如圖4所示。

        圖4 注冊(cè)模態(tài)框

        書籍總覽和書本詳情信息數(shù)據(jù)來源:通過封裝的Hook函數(shù)以及Ngnix定時(shí)任務(wù),從一些開放式網(wǎng)站定時(shí)爬取最新的數(shù)據(jù),并將其存放到數(shù)據(jù)庫中。整體頁面通過模板引擎渲染,當(dāng)用戶訪問不同頁面時(shí),瀏覽器會(huì)根據(jù)請(qǐng)求發(fā)送信息到Nginx服務(wù)器,并發(fā)訪問視圖函數(shù),將需求信息呈現(xiàn)出來。效果如圖5所示。

        圖5 書籍詳情展示效果圖

        3 總結(jié)

        本文基于Python的Flask框架,結(jié)合爬蟲技術(shù)設(shè)計(jì)了一款書籍循環(huán)平臺(tái),該平臺(tái)設(shè)計(jì)美觀大方,交互靈活且人性化,代碼段內(nèi)聚性高耦合性低且可讀性強(qiáng),便于后期維護(hù),同時(shí)巧妙利用瀏覽器的cookie機(jī)制,改善服務(wù)器的負(fù)荷壓力,提高頁面響應(yīng)性能。平臺(tái)旨在實(shí)現(xiàn)書籍再利用,有效緩解了高校書籍浪費(fèi)現(xiàn)象,為推動(dòng)節(jié)約型環(huán)保社會(huì)奉獻(xiàn)了一份力量。

        猜你喜歡
        爬蟲書本頁面
        大狗熊在睡覺
        玩轉(zhuǎn)書本
        幼兒100(2023年17期)2023-05-29 08:32:24
        利用網(wǎng)絡(luò)爬蟲技術(shù)驗(yàn)證房地產(chǎn)灰犀牛之說
        刷新生活的頁面
        基于Python的網(wǎng)絡(luò)爬蟲和反爬蟲技術(shù)研究
        打開書本
        回歸書本:慢讀的樂趣
        利用爬蟲技術(shù)的Geo-Gnutel la VANET流量采集
        大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲技術(shù)
        電子制作(2017年9期)2017-04-17 03:00:46
        開在書本里的花
        美女视频黄是免费| 国产精品香蕉在线观看| 无码精品黑人一区二区三区| 老色鬼永久精品网站| 国语精品视频在线观看不卡| 青青青草视频手机在线| 亚洲不卡在线免费视频| 亚洲国产日韩欧美综合a| 久久午夜无码鲁丝片直播午夜精品| 国产一区二区三区韩国| 好看的中文字幕中文在线| 精品亚洲一区二区三区四区五| 无码va在线观看| 97午夜理论片在线影院| 伊人狠狠色j香婷婷综合| 日本激情一区二区三区| 丰满人妻一区二区三区蜜桃| 全免费a敌肛交毛片免费| 日本黄页网站免费大全| 人妻精品久久中文字幕| 在线观看亚洲视频一区二区| 中出人妻希奇杰卡西av| 五月丁香综合激情六月久久| 国内a∨免费播放| 99成人无码精品视频| 九色精品国产亚洲av麻豆一| 蜜桃av中文字幕在线观看| 欧美大片aaaaa免费观看| 五十路熟女一区二区三区| 亚洲va精品va国产va| 45岁妇女草逼视频播放| 欧美aaaaaa级午夜福利视频 | 蜜臀av人妻一区二区三区 | 免费夜色污私人影院在线观看| 中文字幕Aⅴ人妻一区二区苍井空| 白白白色视频在线观看播放| 久青草影院在线观看国产| 国产免费av片在线播放 | 国产精品27页| 国产成人综合久久大片| 国产精久久一区二区三区|