• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Python的圖書(shū)信息搜集與展示研究

      2022-07-10 13:45:45孫俊李秋月趙晨悅
      現(xiàn)代信息科技 2022年5期
      關(guān)鍵詞:圖書(shū)

      孫俊 李秋月 趙晨悅

      摘 ?要:文章以Python語(yǔ)言為基礎(chǔ)編寫(xiě)了一個(gè)爬蟲(chóng)程序,用于獲取網(wǎng)絡(luò)上關(guān)于圖書(shū)的信息,經(jīng)過(guò)數(shù)據(jù)清洗和篩選后存入到數(shù)據(jù)庫(kù)中實(shí)現(xiàn)數(shù)據(jù)的長(zhǎng)久保存。在經(jīng)過(guò)廣泛查閱相關(guān)主題著作、論文、使用手冊(cè)等資料后,在借鑒前人的研究成果的基礎(chǔ)上,參考了圖書(shū)評(píng)價(jià)人員給出的圖書(shū)得分,嘗試去除網(wǎng)絡(luò)水軍對(duì)圖書(shū)得分的影響,最后通過(guò)給定的新的圖書(shū)分值計(jì)算公式,重新計(jì)算圖書(shū)得分,并以新的分?jǐn)?shù)推薦給用戶。

      關(guān)鍵詞:Python;圖書(shū);推薦;查詢

      中圖分類號(hào):TP311 ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):2096-4706(2022)05-0030-04

      Collection and Display Research of Book Information Based on Python

      SUN Jun1, LI Qiuyue1, ZHAO Chenyue2

      (1.Zhengzhou Technical College, Zhengzhou ?450121, China; 2.Zhengzhou Information Engineering Vocational College, Zhengzhou ?450121, China)

      Abstract: This paper writes a crawler program based on the Python language to obtain information about books on the Internet. After data cleaning and filtering, it is stored in the database to achieve long-term data storage. After extensive review of relevant subject works, papers, user manuals and other materials, on the basis of using for reference from previous research results, and referring to the book scores given by book reviewers, it tries to remove the influence of the Internet army on the book scores. Finally, through the given new book score calculation formula, the book score is recalculated, and the new score is recommended to the user.

      Keywords: Python; book; recommendation; query

      0 ?引 ?言

      在移動(dòng)互聯(lián)網(wǎng)快速發(fā)展的今天,各種各樣的圖書(shū)以及圖書(shū)評(píng)論和圖書(shū)排名的網(wǎng)站層出不窮。面對(duì)如此浩瀚的信息,人們?cè)谶x擇圖書(shū)的時(shí)候總會(huì)感到茫然和困惑,不知應(yīng)該聽(tīng)從哪一家的圖書(shū)排行信息。而且在互聯(lián)網(wǎng)上在圖書(shū)數(shù)據(jù)肯圖書(shū)評(píng)論數(shù)據(jù)存在大量灌水現(xiàn)象,讓人難以分辨。除此之外,各種閱讀門戶網(wǎng)站主要推薦的是網(wǎng)絡(luò)小說(shuō),但是對(duì)經(jīng)典著作等排序甚少,而且雜亂無(wú)章,可信度低[1]。本項(xiàng)目通過(guò)爬蟲(chóng)程序在互聯(lián)網(wǎng)搜集圖書(shū)信息,然后使用新的計(jì)算方法計(jì)算圖書(shū)分值。憑借新在圖書(shū)分值能夠?yàn)橛脩敉扑]圖書(shū)。圖書(shū)評(píng)分經(jīng)過(guò)重新計(jì)算,減少了網(wǎng)絡(luò)水軍對(duì)圖書(shū)分值的影響,增加了圖書(shū)分值的合理性。

      1 ?開(kāi)發(fā)平臺(tái)與開(kāi)發(fā)工具

      本項(xiàng)目使用了目前流行的網(wǎng)絡(luò)爬蟲(chóng)語(yǔ)言Python。該語(yǔ)言具有高性能,語(yǔ)言簡(jiǎn)潔方便,較為實(shí)用的特點(diǎn)。Python語(yǔ)言因其自身簡(jiǎn)單和豐富資源庫(kù)的特性,在網(wǎng)絡(luò)爬蟲(chóng)和數(shù)據(jù)分析方面有著巨大的優(yōu)勢(shì)[2,3]。本項(xiàng)目使用的開(kāi)發(fā)環(huán)境是Python2.7版本。開(kāi)發(fā)工具是PyCharm。在數(shù)據(jù)庫(kù)方面使用的是MySQL5.7版本。

      1.1 ?Python

      Python是一個(gè)自由軟件,語(yǔ)言簡(jiǎn)潔清晰。其語(yǔ)言特點(diǎn)是語(yǔ)言縮進(jìn)強(qiáng)制使用空白符。因?yàn)镻ython是一個(gè)開(kāi)源軟件,所以它有豐富的第三方庫(kù),使得Python使用更加方便高效[4]。Python語(yǔ)言豐富的第三方庫(kù)中就包括為了解決網(wǎng)絡(luò)爬蟲(chóng)問(wèn)題而設(shè)計(jì)的庫(kù),語(yǔ)言結(jié)構(gòu)精簡(jiǎn),因此在網(wǎng)絡(luò)爬蟲(chóng)方面Python語(yǔ)言有著其他語(yǔ)言所沒(méi)有的優(yōu)勢(shì)[5]。

      1.2 ?MySQL

      MySQL是一種小型的數(shù)據(jù)庫(kù),體積很小,運(yùn)行的速度較快,使用的成本比較低,使用方便簡(jiǎn)潔,個(gè)人使用便捷,所以被大量用戶用于個(gè)人使用[6]。

      2 ?系統(tǒng)功能及市場(chǎng)需求分析

      在目前的互聯(lián)網(wǎng)上有大量的圖書(shū)評(píng)論和圖書(shū)排行榜。但是,這些圖書(shū)很多都是網(wǎng)絡(luò)小說(shuō),只在網(wǎng)絡(luò)上流行,沒(méi)有出版實(shí)體書(shū),僅僅依靠在網(wǎng)絡(luò)上獲取關(guān)注[7]。網(wǎng)民們更加喜歡這種簡(jiǎn)單直白的文字小說(shuō),所以在一些圖書(shū)類網(wǎng)站為了迎合網(wǎng)民口味,更多的關(guān)注網(wǎng)絡(luò)小說(shuō),而對(duì)于傳統(tǒng)的出版圖書(shū)卻有很少的關(guān)注。以至于只有豆瓣這一家是較為可靠并且大型的圖書(shū)評(píng)論和圖書(shū)排行網(wǎng)站[8]。但是,隨著豆瓣圖書(shū)排行越來(lái)越受到關(guān)注度,所以引來(lái)了眾多水軍參與圖書(shū)評(píng)價(jià),導(dǎo)致豆瓣的圖書(shū)評(píng)分系統(tǒng)存在一定的不合理性[8]。而且豆瓣的圖書(shū)相關(guān)功能里面并沒(méi)有圖書(shū)推薦功能。只是在每年年末提供當(dāng)年的新書(shū)推薦[9]。本項(xiàng)目彌補(bǔ)這一項(xiàng)的不足,因此依靠豆瓣圖書(shū)數(shù)據(jù)重新給圖書(shū)進(jìn)行評(píng)分,并按用戶喜歡的圖書(shū)類型為用戶提供高分書(shū)籍。這也彌補(bǔ)了圖書(shū)市場(chǎng)推薦功能的不足。并且圖書(shū)推薦和分值計(jì)算采用了已有的和豆瓣圖書(shū)數(shù)據(jù),有一定的數(shù)據(jù)合理性基礎(chǔ)。

      2.1 ?系統(tǒng)功能需求

      功能上要滿足以下兩點(diǎn):(1)用戶通過(guò)輸入關(guān)鍵詞,系統(tǒng)能夠?yàn)橛脩敉扑]相關(guān)的書(shū)籍信息。(2)用戶可以直接搜索某本書(shū)的基本信息。

      2.2 ?系統(tǒng)性能需求

      在數(shù)據(jù)收集在過(guò)程中,使用Python語(yǔ)言制作的爬蟲(chóng)爬取約為四萬(wàn)條數(shù)據(jù),因此需要采用多線程的方式加快爬蟲(chóng)進(jìn)度。但是這樣會(huì)給服務(wù)器帶來(lái)巨大的壓力。如果因?yàn)榻o服務(wù)器帶來(lái)巨大壓力,導(dǎo)致爬蟲(chóng)程序被禁止提供服務(wù),則爬取完全失敗。所以在爬蟲(chóng)運(yùn)行的過(guò)程中要限制爬取速度。按照網(wǎng)站的要求,遵守網(wǎng)站的規(guī)則,不獲取網(wǎng)站禁止獲取的內(nèi)容,尤其是在爬取豆瓣網(wǎng)圖書(shū)信息的時(shí)候,由于豆瓣限制訪問(wèn)速度為150次每小時(shí),所以爬取豆瓣圖書(shū)數(shù)據(jù)非常緩慢。

      綜上所述,豆瓣網(wǎng)的爬蟲(chóng)采用單線程的方式進(jìn)行爬取,避免被豆瓣網(wǎng)禁止訪問(wèn);而當(dāng)當(dāng)網(wǎng)的爬蟲(chóng)可以使用多線程爬取,用于節(jié)約時(shí)間。

      3 ?項(xiàng)目完整流程

      首先是爬蟲(chóng)文件,用于收集當(dāng)當(dāng)網(wǎng)小說(shuō)部分的圖書(shū)信息。獲取的信息包括圖書(shū)的全球唯一編號(hào)、國(guó)際標(biāo)準(zhǔn)書(shū)號(hào)(International Standard Book Number, ISBN)、圖書(shū)的名稱、圖書(shū)的作者、圖書(shū)價(jià)格、圖書(shū)所在的當(dāng)當(dāng)網(wǎng)頁(yè)面地址。然后依據(jù)圖書(shū)ISBN信息,通過(guò)豆瓣API接口訪問(wèn)豆瓣數(shù)據(jù)庫(kù),獲取圖書(shū)信息。然后把圖書(shū)信息進(jìn)行解析,得到具體數(shù)據(jù)。接著把數(shù)據(jù)保存到數(shù)據(jù)庫(kù)中,做數(shù)據(jù)分析。最后制作用戶接口,與用戶進(jìn)行信息交互。

      4 ?項(xiàng)目文件及功能實(shí)現(xiàn)

      本小節(jié)主要介紹本項(xiàng)目的文件以及文件作用和文件中的一些重要代碼。

      4.1 ?GetDangdangbookWriteToMySQL.py

      文件作用:從當(dāng)當(dāng)網(wǎng)上獲取圖書(shū)信息并保存到數(shù)據(jù)庫(kù)中。以下為獲取頁(yè)面中二級(jí)頁(yè)面URL鏈接的函數(shù)代碼。

      def get_two_level_url(soup,url_list):

      # 獲取網(wǎng)頁(yè)信息

      # 解析網(wǎng)頁(yè)信息

      # 得到主要內(nèi)容

      4.2 ?GetDangdangXiaoshuoWriteToFile.py

      文件作用:獲取當(dāng)當(dāng)網(wǎng)上小說(shuō)部分的圖書(shū)URL(Uniform / Universal Resource Locator,統(tǒng)一資源定位符)信息并保存到文件中。以下為獲取頁(yè)面中所需要的信息的函數(shù)代碼,把獲取的信息保存到字典格式的數(shù)據(jù)中。

      def get_book_info(soup,dict,isbn_list):

      # 依據(jù)給定的ISBN號(hào)獲取當(dāng)當(dāng)網(wǎng)上圖書(shū)頁(yè)面的圖書(shū)信息

      4.3 ?GetTagsAndValue.py

      文件作用:獲取圖書(shū)標(biāo)簽并按照標(biāo)簽出現(xiàn)的次數(shù)排序。以下代碼為遍歷每個(gè)列表中的數(shù)據(jù),然后按照出現(xiàn)次數(shù)排序。

      for i in results:

      # 清理獲取到的圖書(shū)信息

      # 將圖書(shū)信息保存到數(shù)據(jù)庫(kù)中

      4.4 ?GetUrlWriteToDoubanbookinfolMySQL.py

      文件作用:從數(shù)據(jù)庫(kù)中讀取圖書(shū)ISBN信息,并通過(guò)豆瓣API(Application Programming Interface,應(yīng)用程序編程接口)獲取豆瓣網(wǎng)上圖書(shū)的信息。

      4.5 ?start.py

      與用戶進(jìn)行交互的接口程序。

      4.6 ?NewValue.Py

      文件作用:計(jì)算圖書(shū)的綜合得分。以下代碼為計(jì)算圖書(shū)綜合評(píng)分的代碼。

      for i in results:

      # 獲取數(shù)據(jù)庫(kù)每本圖書(shū)的信息

      # 計(jì)算圖書(shū)新的得分

      # 將新的得分信息保存到數(shù)據(jù)庫(kù)中

      4.7 ?getTagValue.py

      文件作用:用于計(jì)算圖書(shū)標(biāo)簽的得分。

      5 ?網(wǎng)頁(yè)數(shù)據(jù)處理技術(shù)

      獲取的網(wǎng)頁(yè)有兩種格式:Html和Json。

      Html格式是互聯(lián)網(wǎng)最為常用的一種網(wǎng)頁(yè)格式。該格式網(wǎng)頁(yè)可以通過(guò)BeautifulSoup庫(kù)進(jìn)行直接的解析,獲取網(wǎng)頁(yè)內(nèi)的標(biāo)簽元素和信息,然后對(duì)信息進(jìn)行收集和處理。這里主要用于當(dāng)當(dāng)網(wǎng)上圖書(shū)信息收集。主要步驟為:(1)通過(guò)ruquest庫(kù)中的函數(shù)獲取給定的URL的網(wǎng)頁(yè)信息。(2)使用Beautifulsoup庫(kù)中的函數(shù)解析獲取的網(wǎng)頁(yè)信息。(3)獲取到的圖書(shū)信息以字典格式存儲(chǔ),然后保存到bookspider數(shù)據(jù)庫(kù)中的dangdangbookinfo表中。

      Json格式的數(shù)據(jù)需要用到Python的第三方Json庫(kù)對(duì)該格式信息進(jìn)行解析。主要用在通過(guò)豆瓣網(wǎng)API獲取圖書(shū)信息。主要步驟為:(1)讀取數(shù)據(jù)庫(kù)庫(kù)中的ISBN信息并以列表形式存儲(chǔ)。(2)把讀取到的ISBN和豆瓣API接口連接起來(lái)組成字符串,然后依據(jù)該URL通過(guò)request庫(kù)中的函數(shù)后去該URL指定的網(wǎng)頁(yè)信息。(3)通過(guò)json庫(kù)中的函數(shù)解析獲取的頁(yè)面信息,然后以字典的格式存儲(chǔ)數(shù)據(jù)。(4)把圖書(shū)信息存儲(chǔ)到bookspider數(shù)據(jù)庫(kù)中的doubanbookinfo表中。

      6 ?數(shù)據(jù)清洗和處理以及數(shù)據(jù)庫(kù)存儲(chǔ)

      在獲取的當(dāng)當(dāng)網(wǎng)圖書(shū)信息時(shí),有的圖書(shū)信息錯(cuò)誤或者信息不完善。所以要對(duì)不完善的信息進(jìn)行補(bǔ)全,錯(cuò)誤在信息進(jìn)行修正。有的圖書(shū)信息內(nèi)容錯(cuò)誤或者格式不正確,需要?jiǎng)h除此圖書(shū)的信息。有的圖書(shū)信息和其他書(shū)籍信息相互顛倒,需要?jiǎng)h除。在經(jīng)過(guò)對(duì)數(shù)據(jù)的清洗后,本項(xiàng)目以全球唯一圖書(shū)編號(hào)ISBN作為主鍵,把圖書(shū)數(shù)據(jù)存儲(chǔ)到本地的MySQL數(shù)據(jù)庫(kù)中。

      在獲取當(dāng)當(dāng)網(wǎng)關(guān)于圖書(shū)的信息之后,項(xiàng)目系統(tǒng)根據(jù)豆瓣網(wǎng)提供的API,按照ISBN號(hào)碼獲取豆瓣網(wǎng)上該圖書(shū)的信息。在獲取圖書(shū)信息時(shí)可能會(huì)出現(xiàn)的錯(cuò)誤包括ISBN重復(fù)、沒(méi)有該ISBN號(hào)碼的圖書(shū)信息肯存儲(chǔ)到數(shù)據(jù)庫(kù)錯(cuò)誤。

      7 ?數(shù)據(jù)分析及分?jǐn)?shù)重計(jì)算

      在獲取數(shù)據(jù)并存儲(chǔ)到數(shù)據(jù)庫(kù)中之后需要對(duì)數(shù)據(jù)進(jìn)行清洗,之后進(jìn)行數(shù)據(jù)分析,計(jì)算綜合得分。之所以對(duì)豆瓣圖書(shū)進(jìn)行重新評(píng)分,具體原因有:(1)豆瓣評(píng)分來(lái)源于用戶的自主評(píng)分,用戶在評(píng)分時(shí)沒(méi)有考慮到該圖書(shū)的易讀性,由于人的主觀因素這是不可避免的。(2)豆瓣部分圖書(shū)評(píng)分有水軍參與,刻意降低了該圖書(shū)的評(píng)分。

      綜合得分是在原有的豆瓣評(píng)分的基礎(chǔ)上添加了評(píng)價(jià)人數(shù)得分和標(biāo)簽得分。這樣就增加圖書(shū)易讀性得分,使得圖書(shū)評(píng)分考慮到了讓用戶能夠讀懂該圖書(shū)。

      計(jì)算綜合得分的公式為:

      a×5+ln(b)×2.5+c×2.5(1)

      式(1)中,a為該書(shū)豆瓣得分,b為該書(shū)評(píng)價(jià)人數(shù),c為該書(shū)標(biāo)簽綜合得分。

      c的計(jì)算公式為:

      (2)

      式(2)中,d為該圖書(shū)所有標(biāo)簽中某一標(biāo)簽個(gè)數(shù),e為另一標(biāo)簽個(gè)數(shù),f為另一標(biāo)簽個(gè)數(shù),n為總標(biāo)簽數(shù)。即求出每個(gè)標(biāo)簽出現(xiàn)次數(shù)的自然對(duì)數(shù)字,然后把每個(gè)值相加求和再除以總標(biāo)簽數(shù)。

      8 ?程序設(shè)計(jì)與編碼實(shí)現(xiàn)

      8.1 ?當(dāng)當(dāng)網(wǎng)爬蟲(chóng)程序

      當(dāng)當(dāng)網(wǎng)的圖書(shū)主頁(yè)使用的是html格式的網(wǎng)頁(yè)文件。本項(xiàng)目程序使用Python中的requests庫(kù)來(lái)獲取頁(yè)面源代碼。使用BeautifulSoup庫(kù)解析網(wǎng)頁(yè)格式,然后獲取主要信息。該過(guò)程首先是獲取當(dāng)當(dāng)網(wǎng)上小說(shuō)分類下的所有網(wǎng)頁(yè)。在這一級(jí)頁(yè)面下獲取每個(gè)圖書(shū)的URL鏈接,然后進(jìn)入下一頁(yè)獲取圖書(shū)詳情頁(yè)的鏈接,最后獲取所有圖書(shū)詳情頁(yè)URL鏈接,并保存到鏈表中。循環(huán)遍歷這個(gè)鏈表,依次訪問(wèn)這些圖書(shū)詳情頁(yè)的網(wǎng)址連接,通過(guò)程序獲取在當(dāng)當(dāng)網(wǎng)上的圖書(shū)信息。獲取的圖書(shū)信息包括:圖書(shū)國(guó)際標(biāo)準(zhǔn)編號(hào)ISBN、書(shū)名、作者、出版社、價(jià)格和當(dāng)當(dāng)網(wǎng)上該圖書(shū)在URL。最后把數(shù)據(jù)存儲(chǔ)為字典類型的數(shù)據(jù),統(tǒng)一保存到bookspider數(shù)據(jù)庫(kù)下的dangdangbookinfo表中。

      8.2 ?豆瓣網(wǎng)爬蟲(chóng)程序

      豆瓣網(wǎng)為用戶提供了API接口,所以可以使用API便捷的爬取豆瓣網(wǎng)對(duì)應(yīng)的圖書(shū)信息。但是,API限制了用戶訪問(wèn)服務(wù)器的速度,需要申請(qǐng)API接口的key用于解鎖用戶身份。但是豆瓣在早些年的時(shí)候由于內(nèi)部原因取消了訪問(wèn)申請(qǐng),所以現(xiàn)在只能以游客的身份進(jìn)行爬取。沒(méi)有注冊(cè)的用戶訪問(wèn)速度受到限制,只能以每小時(shí)150次訪問(wèn)的速度進(jìn)行訪問(wèn)。

      按照豆瓣網(wǎng)信息服務(wù)提供頁(yè)提供的API說(shuō)明,豆瓣網(wǎng)所提供的數(shù)據(jù)是json格式。因此需要對(duì)獲取的數(shù)據(jù)進(jìn)行解析,解析完的數(shù)據(jù)保存在一個(gè)字典類型在變量中,最后批量保存到自定義的bookspider數(shù)據(jù)庫(kù)的doubanbookinfo表中。其保存的圖書(shū)信息有:圖書(shū)國(guó)際統(tǒng)一編號(hào)ISBN、書(shū)名、作者、作者簡(jiǎn)介、標(biāo)簽、評(píng)價(jià)人數(shù)、評(píng)分、豆瓣ID、包裝、頁(yè)數(shù)、出版社、原標(biāo)題、豆瓣鏈接、圖片和評(píng)論。

      8.3 ?分?jǐn)?shù)計(jì)算

      標(biāo)簽分?jǐn)?shù)計(jì)算。標(biāo)簽計(jì)算分?jǐn)?shù)主要是考慮到該圖書(shū)的易讀性。如果該圖書(shū)的標(biāo)簽在其他圖書(shū)中出現(xiàn),而且出現(xiàn)次數(shù)很多,則說(shuō)明該圖書(shū)較為通俗,能讓大部分讀者接受,具有較高的易讀性。標(biāo)簽出現(xiàn)次數(shù)的價(jià)值增長(zhǎng)隨著出現(xiàn)次數(shù)的增多而逐漸變慢,所以采用對(duì)數(shù)建模比較合適。求出每個(gè)標(biāo)簽價(jià)值的總和后再求平均數(shù),可使數(shù)據(jù)范圍在給定的范圍之間。

      綜合得分計(jì)算。綜合得分計(jì)算主要有三部分組成。豆瓣得分反應(yīng)大家對(duì)該圖書(shū)的主觀評(píng)價(jià)得分,評(píng)價(jià)人數(shù)和標(biāo)簽得分反應(yīng)該圖書(shū)的易讀性得分。綜合起來(lái),給予豆瓣評(píng)5.0的權(quán)值,給予評(píng)價(jià)人數(shù)得分和標(biāo)簽得分各2.5的權(quán)值,使得最后的最高綜合得分約為100分。該權(quán)值的分配是考慮到該圖書(shū)本身的價(jià)值和該圖書(shū)易讀性的價(jià)值。在為用戶推薦相關(guān)圖書(shū)時(shí)能夠更加準(zhǔn)確滿足用戶需求。

      8.4 ?用戶交互界面

      本項(xiàng)目采用了一個(gè)Python自帶的簡(jiǎn)單地與用戶交互的界面。用戶可以在這個(gè)界面里查找圖書(shū)相關(guān)信息和獲取推薦的圖書(shū)信息。該界面采用Python consoleline,通過(guò)用戶輸入信息與用戶進(jìn)行交互。擁有交互界面的主要原因是,通過(guò)用戶輸入的信息去搜索含有該標(biāo)簽的書(shū)籍,然后按照綜合評(píng)分排序?yàn)橛脩敉扑]書(shū)籍。

      圖1為程序運(yùn)行時(shí)進(jìn)行搜索的實(shí)例,通過(guò)搜索“三體”一詞獲取圖書(shū)信息中ISBN,或書(shū)名,或作者名中包含“三體”一詞的圖書(shū)信息,然后再界面中顯示出搜索到的圖書(shū)信息,包括ISBN、書(shū)名,作者名,評(píng)分人數(shù),豆瓣評(píng)分和豆瓣網(wǎng)鏈接。用戶可以通過(guò)豆瓣網(wǎng)鏈接直接查看豆瓣網(wǎng)上該圖書(shū)的詳細(xì)信息。

      圖1 ?圖書(shū)搜索運(yùn)行截圖

      圖2為系統(tǒng)運(yùn)行時(shí)進(jìn)行圖書(shū)推薦的實(shí)例,通過(guò)“小說(shuō)”一詞獲取圖書(shū)信息標(biāo)簽中包含“小說(shuō)”一詞的圖書(shū)信息,然后再按照?qǐng)D書(shū)的綜合評(píng)分由高到低排列,在界面中顯示出推薦的前十名圖書(shū)的圖書(shū)信息。顯示的圖書(shū)信息包括圖書(shū)ISBN號(hào)碼、圖書(shū)名稱、作者名稱、評(píng)分人數(shù)、豆瓣評(píng)分和豆瓣網(wǎng)鏈接。

      圖2 ?圖書(shū)推薦運(yùn)行截圖

      9 ?數(shù)據(jù)存儲(chǔ)

      數(shù)據(jù)存儲(chǔ)在MySQL數(shù)據(jù)庫(kù)中。使用該數(shù)據(jù)庫(kù)主要是因?yàn)槭褂梅奖?,操作?jiǎn)單,容易用戶使用。本系統(tǒng)創(chuàng)建的數(shù)據(jù)庫(kù)名稱為bookspider。主機(jī)名或IP地址為localhost,端口號(hào)為3306,用戶名為root,密碼為root。其中共有三個(gè)數(shù)據(jù)表,分別是dangdnagbookinfo,doubanbookinfo和tagvalue,在此只列舉前兩個(gè)數(shù)據(jù)表。

      9.1 ?dangdangbookinfo表

      該表保存了從當(dāng)當(dāng)網(wǎng)上爬取的圖書(shū)信息,其中ISBN作為全球圖書(shū)唯一編號(hào)可以作為主鍵。表1列出了該數(shù)據(jù)表中的字段名,相應(yīng)的字段描述,字段類型,是夠?yàn)橹麈I以及是否允許為空。

      9.2 ?doubanbookinfo表

      該表保存了豆瓣網(wǎng)爬取的圖書(shū)信息,其中ISBN作為全球圖書(shū)唯一編號(hào)可以作為主鍵。表2列出了該數(shù)據(jù)表中的字段名,相應(yīng)的字段描述,字段類型,是夠?yàn)橹麈I以及是否允許為空。

      10 ?結(jié) ?論

      本項(xiàng)目是主要功能是圖書(shū)推薦和圖書(shū)查找。圖書(shū)推薦的依據(jù)是豆瓣網(wǎng)上的圖書(shū)信息。通過(guò)對(duì)豆瓣數(shù)據(jù)庫(kù)的爬取,獲取圖書(shū)信息,之后對(duì)數(shù)據(jù)進(jìn)行清洗和處理。本項(xiàng)目實(shí)現(xiàn)了為用戶推薦圖書(shū)功能,這是豆瓣沒(méi)有提供的,也是其他大型圖書(shū)網(wǎng)站所沒(méi)有的。在為用戶推薦圖書(shū)時(shí),采用了一種新的圖書(shū)評(píng)分計(jì)算方法,其中參考了豆瓣評(píng)分和評(píng)價(jià)人數(shù),之后計(jì)算出綜合評(píng)分。相比較于豆瓣的評(píng)分更加合理。本項(xiàng)目通過(guò)豆瓣數(shù)據(jù)進(jìn)行重新處理和優(yōu)化,使數(shù)據(jù)更加準(zhǔn)確,能為用戶提供更加可靠的圖書(shū)推薦。

      參考文獻(xiàn):

      [1] 李琳.基于Python的網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) [J].信息通信,2017(9):26-27.

      [2] 楊國(guó)軍.基于Python的數(shù)據(jù)爬蟲(chóng)的設(shè)計(jì)與實(shí)現(xiàn) [J].數(shù)字技術(shù)與應(yīng)用,2020,38(10):153-154+158.

      [3] DONEY A B.像計(jì)算機(jī)科學(xué)家一樣思考Python [M].趙普明,譯,北京:人民郵電出版社,2016.

      [4] LAWSON.用Python寫(xiě)網(wǎng)絡(luò)爬蟲(chóng) [M].李斌,譯,北京:人民郵電出版社,2016.

      [5] NELLI F.Python數(shù)據(jù)分析實(shí)戰(zhàn) [M].杜春曉,譯,北京:人民郵電出版社,2016.

      [6] 劉增杰.MySQL 5.7從入門到精通(視頻教學(xué)版) [M].北京:清華大學(xué)出版社,2016.

      [7] 王文民.中國(guó)圖書(shū)市場(chǎng)分析 [D].成都:西南交通大學(xué),2007.

      [8] 劉高軍,印佳明.基于圖書(shū)特征及詞典的豆瓣圖書(shū)垃圾評(píng)論識(shí)別 [J].計(jì)算機(jī)技術(shù)與發(fā)展,2019,29(11):107-112.

      [9] 丁媛媛.淺析豆瓣圖書(shū)“一星運(yùn)動(dòng)” [J].新聞研究導(dǎo)刊,2020,11(9):71-72.

      作者簡(jiǎn)介:孫?。?994.12—),男,漢族,河南鄭州人,助教,碩士,研究方向:人工智能、自然語(yǔ)言處理;李秋月(1992.01—),女,漢族,河南周口人,助教,碩士,研究方向:網(wǎng)絡(luò)信息安全、物聯(lián)網(wǎng)技術(shù)、人工智能應(yīng)用;趙晨悅(1994.06—),男,漢族,河南鄭州人,助教,學(xué)士,研究方向:應(yīng)用程序開(kāi)發(fā)、計(jì)算機(jī)網(wǎng)絡(luò)。

      猜你喜歡
      圖書(shū)
      無(wú)障礙圖書(shū)聯(lián)盟
      圖書(shū)推薦
      南風(fēng)(2020年22期)2020-09-15 07:47:08
      歡迎來(lái)到圖書(shū)借閱角
      班里有個(gè)圖書(shū)角
      圖書(shū)推介
      卫辉市| 博罗县| 扎囊县| 调兵山市| 郧西县| 南木林县| 荣成市| 永清县| 阿坝| 淮南市| 白银市| 沈阳市| 陇川县| 环江| 廊坊市| 古丈县| 栾城县| 恩施市| 广灵县| 桃源县| 海淀区| 大邑县| 威远县| 宣汉县| 宜兰市| 富民县| 盐亭县| 南充市| 张家港市| 鄂伦春自治旗| 巫溪县| 岳阳市| 凌云县| 若羌县| 嘉禾县| 德江县| 英山县| 新津县| 吴忠市| 石首市| 勐海县|