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

        ?

        基于Python的圖書信息搜集與展示研究

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

        孫俊 李秋月 趙晨悅

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

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

        中圖分類號:TP311 ? ? ? 文獻標識碼:A文章編號: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 ?引 ?言

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

        1 ?開發(fā)平臺與開發(fā)工具

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

        1.1 ?Python

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

        1.2 ?MySQL

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

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

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

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

        功能上要滿足以下兩點:(1)用戶通過輸入關(guān)鍵詞,系統(tǒng)能夠為用戶推薦相關(guān)的書籍信息。(2)用戶可以直接搜索某本書的基本信息。

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

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

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

        3 ?項目完整流程

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

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

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

        4.1 ?GetDangdangbookWriteToMySQL.py

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

        def get_two_level_url(soup,url_list):

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

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

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

        4.2 ?GetDangdangXiaoshuoWriteToFile.py

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

        def get_book_info(soup,dict,isbn_list):

        # 依據(jù)給定的ISBN號獲取當當網(wǎng)上圖書頁面的圖書信息

        4.3 ?GetTagsAndValue.py

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

        for i in results:

        # 清理獲取到的圖書信息

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

        4.4 ?GetUrlWriteToDoubanbookinfolMySQL.py

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

        4.5 ?start.py

        與用戶進行交互的接口程序。

        4.6 ?NewValue.Py

        文件作用:計算圖書的綜合得分。以下代碼為計算圖書綜合評分的代碼。

        for i in results:

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

        # 計算圖書新的得分

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

        4.7 ?getTagValue.py

        文件作用:用于計算圖書標簽的得分。

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

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

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

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

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

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

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

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

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

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

        計算綜合得分的公式為:

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

        式(1)中,a為該書豆瓣得分,b為該書評價人數(shù),c為該書標簽綜合得分。

        c的計算公式為:

        (2)

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

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

        8.1 ?當當網(wǎng)爬蟲程序

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

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

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

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

        8.3 ?分數(shù)計算

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

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

        8.4 ?用戶交互界面

        本項目采用了一個Python自帶的簡單地與用戶交互的界面。用戶可以在這個界面里查找圖書相關(guān)信息和獲取推薦的圖書信息。該界面采用Python consoleline,通過用戶輸入信息與用戶進行交互。擁有交互界面的主要原因是,通過用戶輸入的信息去搜索含有該標簽的書籍,然后按照綜合評分排序為用戶推薦書籍。

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

        圖1 ?圖書搜索運行截圖

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

        圖2 ?圖書推薦運行截圖

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

        數(shù)據(jù)存儲在MySQL數(shù)據(jù)庫中。使用該數(shù)據(jù)庫主要是因為使用方便,操作簡單,容易用戶使用。本系統(tǒng)創(chuàng)建的數(shù)據(jù)庫名稱為bookspider。主機名或IP地址為localhost,端口號為3306,用戶名為root,密碼為root。其中共有三個數(shù)據(jù)表,分別是dangdnagbookinfo,doubanbookinfo和tagvalue,在此只列舉前兩個數(shù)據(jù)表。

        9.1 ?dangdangbookinfo表

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

        9.2 ?doubanbookinfo表

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

        10 ?結(jié) ?論

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

        參考文獻:

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

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

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

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

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

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

        [7] 王文民.中國圖書市場分析 [D].成都:西南交通大學,2007.

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

        [9] 丁媛媛.淺析豆瓣圖書“一星運動” [J].新聞研究導刊,2020,11(9):71-72.

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

        猜你喜歡
        圖書
        無障礙圖書聯(lián)盟
        圖書推薦
        南風(2020年22期)2020-09-15 07:47:08
        歡迎來到圖書借閱角
        班里有個圖書角
        圖書推介
        91精品啪在线观九色| 人妻少妇被粗大爽.9797pw| 蜜桃一区二区三区| 夜爽8888视频在线观看| 成人天堂资源www在线| 456亚洲人成在线播放网站| 国产福利97精品一区二区| 色综合久久五月天久久久| 日本刺激视频一区二区| 亚洲 欧美 国产 制服 动漫| 激情内射日本一区二区三区| 日本精品a在线观看| 国产伪娘人妖在线观看| 亚洲天堂av福利在线| 亚洲a∨无码男人的天堂| 三级特黄60分钟在线观看| 中文字幕无码专区一VA亚洲V专| 娇妻粗大高潮白浆| 日本一区二区高清精品| 国产精品综合色区在线观看| 国产成人精品一区二区不卡| 91亚洲国产成人aⅴ毛片大全| 日韩人妻无码中文字幕一区| 久久精品国产亚洲av久五月天| 亚洲av成人片在线观看| 无码专区久久综合久中文字幕| 精品一区二区av天堂| 自拍av免费在线观看 | 极品美女扒开粉嫩小泬图片| 天躁夜夜躁狼狠躁| 丰满熟妇人妻无码区| 日本激情久久精品人妻热| 天堂网av一区二区三区在线观看| 免费a级毛片永久免费| 亚洲乱码少妇中文字幕| 手机在线免费观看的av| 小辣椒福利视频导航| 国模私拍福利一区二区| 美女草逼视频免费播放| 亚洲狠狠婷婷综合久久久久| 日韩欧美在线综合网|