版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
摘要網絡爬蟲是一種自動收集、提取互聯網信息的程序,通過網絡爬蟲可以便捷高效的獲取大量信息。此次設計使用Python語言實現了一個爬取嗶哩嗶哩視頻網站作者信息的網絡爬蟲,對抓取到的作者信息進行處理,通過Django框架對獲取到的數據進行前臺展示,設置定時任務每日自動化執行爬蟲程序,保證數據及時更新。關鍵詞:Python,網絡爬蟲,數據展示,DjangoAbstractWebcrawlerisakindofprogramthatcanautomaticallycollectandextractInternetinformation.Throughwebcrawler,alargeamountofinformationcanbeobtainedconvenientlyandefficiently.Inthisdesign,pythonlanguageisusedtoimplementawebcrawlerthatcrawlstheauthorinformationofBiliBilivideowebsite,processesthecapturedauthorinformation,displaystheacquireddataintheforegroundthroughDjangoframework,setsatimingtasktoautomaticallyexecutethecrawlerprogrameveryday,andensuresthetimelyupdateofdata.Keywords: Python,WebCrawler,DataDisplay,Django目錄前言現有的爬蟲已經應用在新聞、金融信息、農業信息、汽車行業、人物簡介、林業主題、房產信息等各個方面,但是尚沒有關于嗶哩嗶哩視頻網站視頻主排名為主題的爬蟲。此次畢業設計作品,以嗶哩嗶哩視頻網站為爬取目標,采集視頻制作者信息,進行匯總展示,具有現實意義。1.1背景與意義人類社會已經進入大數據時代,大數據深刻改變著人們的工作和生活。對大數據的獲取、處理與分析,已成為提高未來競爭力的關鍵要素。但如何獲取這些寶貴數據呢,網絡爬蟲就是一種高效的信息采集利器,利用它可以快速、準確地采集人們想要的各種數據資源。人們需要采集的數據大多來源于互聯網的各個網站。然而,不同的網站結構不一、布局復雜、渲染方式多樣,有的網站還專門采取了一系列“反爬”的防范措施。因此,為準確高效地采集到需要的數據,人們需要采取具有針對性的反制措施。為了將數據有效的檢索并組織呈現出來,一個靈活的爬蟲有著無可替代的重要意義。1.2國內外研究現狀網絡數據抓取有很長的歷史,可以追溯到萬維網誕生之時。為了查找和組合互聯網上可用的分布式數據,人們創建了一個自動化程序,稱為網絡爬蟲。隨后,互聯網發展起來,海量網頁包含了不同的形式的數據,其中包括文本、圖像、視頻和音頻。互聯網變成了一個開放的數據源,要進行數據分析,首先要有數據源,而網絡爬蟲可以讓人們獲取更多數據源的同時,按照人們的目的進行采集,從而去掉很多無關數據。現階段國內外有很多優秀、成熟的開源爬蟲框架以及數據分析工具和平臺。1.國內網絡爬蟲及數據展示系統的發展現狀國內比較成熟的爬蟲框架是Pyspider,Pyspider是一個國人編寫的強大的網絡爬蟲系統并帶有強大的WebUI。采用Python語言編寫,分布式架構,支持多種數據庫后端,強大的WebUI支持腳本編輯器,任務監視器,項目管理器以及結果查看器。Pyspider的主要功能包括,抓取、更新調度多站點的特定的頁面;需要對頁面進行結構化信息提取;靈活可擴展,穩定可監控。滿足了絕大多數Python爬蟲的需求--定向抓取,結構化解析。國內現在比較成熟的數據分析展示平臺也很多,比如西瓜數據就是一個專業的新媒體數據服務提供商,系統收錄并監測超過300萬個公眾號,每日更新500萬篇微信文章及數據。目前西瓜數據提供的服務有:公眾號診斷:可對任意公眾號進行運營質量檢測及廣告價值評估,提供公眾號粉絲預估、發文分析、違規預警、廣告報價預估、廣告分析、公眾號人群畫像等。2.國外網絡爬蟲及數據展示系統的發展現狀國外應用比較廣泛的爬蟲框架是Scrapy,Scrapy是一個為了爬取網站數據,提取結構性數據而編寫的應用框架。可以應用在包括數據挖掘,信息處理或存儲歷史數據等一系列的程序中。Scrapy使用Twisted這個異步網絡庫來處理網絡通訊,架構清晰,并且包含了各種中間件接口,可以靈活的完成各種需求。國外目前常見的網站數據追蹤工具有GoogleAnalytics、OMNITURE、Webtrends等,它們可以進行網站數據分析,并用于網站運維人員分析網站狀態及服務器錯誤。第2章系統的可行性分析可行性分析是通過對產品市場需求、資源供應、建設規模、環境影響、資金籌措、盈利能力等,從技術、經濟、社會等方面進行調查研究和分析比較,從而給出產品的建設性意見,為產品決策提供依據。可行性研究對于整個軟件項目的建設過程有著非常重要的意義。可行性分析應具有預見性、可靠性和科學性的特點。2.1可行性分析1.經濟的可行性本系統對于部署設備的硬件要求不高,無需多高的軟件與硬件配置,完成了兼容性高、成本低和效率高的特點。系統運行中所需要的網絡代理也采用了網絡提供的免費代理,節省了成本。鑒于計算機技術的日趨完善并走向成熟,在軟件硬件的配置以及系統的開發技術均已經可行的情況下,開發網絡爬蟲及數據展示系統的成本不高,因此在經濟上是可行的。2.技術的可行性本系統采用的開發技術均屬時下較為流行的技術,在開發過程中使用Python語言進行編寫。系統的爬蟲部分使用Requests庫完成數據爬取收集,后端使用Django框架對后端進行邏輯編寫,前端采用Datatables、HTML標簽和jQuery對頁面進行布局美化。因此在技術方面是可行的。3.操作的可行性本系統的開發充分考慮到用戶界面使用難度和使用者的計算機操作水平,盡可能的提供了人性化和直觀的界面,具備有簡潔、清晰、易于上手等優點。因此操作可行性是可行的。2.2相關技術介紹本系統使用的開發系統為Windows操作系統、使用的開發工具為JetBrainsPyCharm、開發語言為Python、數據庫采用MySQL、服務器使用Django內置服務器。后端的技術采用現今較流行的Django框架;爬蟲模塊的技術主要采用Requests庫;前端的技術采用Datatables、HTML標簽和jQuery等技術。Django框架介紹Django是一個開放源代碼的web應用框架,由Python寫成。初次發布于2005年7月,并于2008年9月發布了第一個正式版本1.0。它是一種軟件設計典范,用一種業務邏輯、數據、界面顯示分離的方法組織代碼,將業務邏輯聚集到一個部件里面,在改進和個性化定制界面及用戶交互的同時,不需要重新編寫業務邏輯。它的核心思想是解耦,解決前后兩端代碼的耦合性。Django框架的架構總覽圖如圖2-1所示。圖2-1Django架構總覽圖Django框架的精髓就在于middleware(中間件),Django所有的請求、返回都由中間件來完成。中間件,就是處理HTTP的request和response的,middleware都需要在“project/settings.py”的MIDDLEWARE_CLASSES中定義。處理HTTP的request和response的請求流程圖如圖2-2所示。圖2-1middleware處理程序流程圖Requests庫介紹Requests是功能強大的爬取網頁信息的第三方庫,可以進行自動爬取HTML頁面及自動網絡請求提交的操作。它是用Python語言編寫,基于urllib,采用ApacheLicensed開源協議的HTTP庫,比urllib更方便,可以簡約開發人員大量的工作,完全滿足爬蟲編寫的需求。開發人員可用通過Requests庫中的方法輕松地獲取狀態碼,網頁源代碼以及cookie等等。對比urllib的轉碼,各種聲明的操作,Requests更具便捷性Datatables介紹Datatables是一款jquery表格插件。它是一個高度靈活的工具,可以將任何HTML表格添加高級的交互功能。數據是復雜的,并且所有的數據是不一樣的。因此Datatables中有很多的選項可用于配置如何獲得表中的數據顯示,以及如何處理這些復雜的數據。2.3本章小結本章首先從系統的可行性出發,分別論述分析了系統的經濟可行性、技術可行性以及操作可行性,均得出了可行結論,因此整個系統是可行的。然后對本系統使用的相關技術一一做了簡單介紹。第3章系統的需求分析系統的需求分析是系統計劃階段中的一個重要活動,也是系統生存周期中的一個重要環節。該系統的功能性需求包括嗶哩嗶哩視頻網站視頻作者信息抓取、信息存儲、信息變動定時更新、前百視頻作者信息展示、粉絲數變更展示、排名變動展示、前百視頻作者搜索、用戶提交視頻作者連接。其中,又可能由于目標網站的更新變化,需求理解不全面分析等,也會隨著分析、實現和設計而不斷深入的完善,也可能在最后重新修訂軟件需求。3.1功能需求3.1.1確定業務參與者業務參與者主要有系統管理員和使用者這二類參與者參與此業務。采用參與者詞匯表進行描述如表3-1所示。表3-1參與者詞匯表序號詞匯描述1管理員對整個系統進行維護管理的用戶2瀏覽者進入系統后可查看數據信息的用戶3.1.2用例詞匯表主要有網頁分析、爬蟲偽裝、設置代理、信息抓取、信息存儲、變動更新、信息展示、作者搜索、提交鏈接等用例。采用用例詞匯表進行描述如下表3-2所示。表3-2用例詞匯表用例名稱用例描述預期的參與者網頁分析對目標網頁進行分析,找尋爬取思路管理員爬蟲偽裝偽裝爬蟲,模擬瀏覽器訪問目標網站管理員設置代理使用代理服務器,隱藏真實IP管理員信息抓取從目標網站獲取數據信息管理員信息存儲將爬取到的數據進行本地存儲管理員變動更新對信息的變動進行更新管理員信息展示將獲取的數據進行展示管理員作者搜索搜索感興趣的視頻作者瀏覽者提交鏈接提交新的視頻作者鏈接瀏覽者3.1.3系統用例模型本系統總共分成兩種角色,分別為系統管理員和使用者角色。每種角色對應的功能也不同。其中,以下分別為系統管理員和使用者這兩種角色的功能做出簡介。(1)系統管理員角色包括:網頁分析、爬蟲偽裝、設置代理、信息抓取、信息存儲、變動更新、信息展示等功能。(2)使用者角色包括:瀏覽信息、作者搜索、提交鏈接等功能。本系統的整體用例模型如圖3-1所示。圖3-1系統整體用例模型圖3.2各模塊用例描述3.2.1網頁分析用例網頁分析用例主要是系統管理員對目標網站的剖析,使管理員對目標網站有一個清晰明確的認識,為后續工作中,制定出可行、高效的爬取策略打下基礎。3.2.2爬蟲偽裝用例爬蟲偽裝用例主要是系統管理員對爬蟲可行性提供的保障,網站為了避免爬蟲的惡意訪問,會設置一些反爬蟲機制,對方服務器會對爬蟲進行屏蔽。通過偽裝爬蟲來躲避網站限制。3.2.3設置代理用例設置代理用例主要是將爬蟲本身的IP進行隱藏,通過使用網絡代理服務器提供的IP地址,讓目標網站服務器無法監測到爬蟲的真實IP,達到隱藏爬蟲的目標,提升系統的可靠性。3.2.4信息抓取用例信息抓取用例主要從目標網站獲取系統希望得到的數據信息,通過網絡爬蟲自動化的獲取目標信息,節省了人力物力,大大提高數據獲取效率,獲取了大量數據。3.2.5信息存儲用例信息存儲用例主要是管理員將獲取到的數據進行校驗、清洗,完成對有效數據的保留,并存儲到本地的功能。3.2.6變動更新用例變動更新用例主要是管理員對已有信息的變動情況,進行周期性的更新,通過不斷重新爬取數據,保證數據的準確性、及時性,使系統的數據更加準確、真實、可靠。3.2.7信息展示用例信息展示用例主要是管理員對已經收集到的信息進行前臺展示、使系統使用者對這些數據有更加清晰、直觀、明確的感受,更好地為系統使用者提供優質體驗。3.2.8作者搜索用例作者搜索用例主要是在瀏覽視頻作者信息時,完成對用戶感興趣的視頻作者的搜索功能。作者搜索用例詳細描述如下表3-1所示。表3-1作者搜索用例描述用例名稱描述用例名稱作者搜索主要的參與者使用者目標搜索使用者感興趣的視頻作者(續表3-1)常規流程(1)進入數據展示頁面(2)輸入關鍵字(3)點擊搜索備選流程無前置條件用例執行開始前,系統已成功開啟后置條件如果用例執行成功,系統展示搜索結果3.2.9提交鏈接用例提交鏈接用例主要是使用者將自己喜歡作者的個人鏈接提交系統,系統下次爬取時將該作者加入爬取列表。提交鏈接用例詳細描述如下表3-2所示。表3-2提交鏈接用例描述用例名稱描述用例名稱提交鏈接主要的參與者使用者目標將新視頻作者個人鏈接提交到系統常規流程(1)進入數據展示頁面(2)輸入視頻作者個人鏈接(3)點擊提交,用例結束備選流程無前置條件用例執行開始前,系統已成功開啟后置條件如果鏈接格式正確,將此鏈接提交系統3.3本章小結本章首先從系統的需要求分析進行論述,又分述了系統的功能性需求。最后用了一個系統整體用例模型圖總結了該系統的全部功能需求。第4章系統的總體設計系統的總體設計主要包括:系統設計原則、系統總體結構設計、系統模塊結構設計、數據庫設計、代碼設計以及系統可靠性與內部控制設計等內容。系統的總體設計是工程項目開發中一個非常重要的階段。4.1系統設計原則系統設計原則是連接需求分析、硬件系統以及使得系統實現的主要橋梁,對軟件的設計應了解軟件設計的設計原則。1.可靠性原則系統可靠性意味著該軟件在測試運行階段中應盡量避免可能會發生故障的能力,系統可靠性在設計階段就以確定。2.可擴展性原則系統可擴展性是要在設計階段留有接口和升級空間,對擴展開發,對修改關閉,方便日后需要對程序的擴展。3.安全性原則系統安全性能保證用戶的個人信息、操作等多方面的安全,同時又能夠對系統及時的修復、處理各種的漏洞,以提高安全性能。4.可理解性原則該系統不僅僅文檔清晰可讀,更要求系統本身具有簡單名了的結構,也取決于程序設計者的洞察力和創造性,以及對設計對象掌握程度。4.2系統總體結構圖系統總體結構圖主要是反映了系統中模塊的調用關系和層次關系。本系統主要采用了較流行的B/S結構(瀏覽器/服務器模式),該結構大大地減輕了服務器的負擔,增加了交互性。本系統按角色總共分為系統管理者模塊和使用者模塊兩大模塊。系統總體結構圖如下圖4-1所示。圖4-1系統總體結構圖4.3系統功能模塊設計根據前面對數據功能模塊分析,本系統可劃分為兩大子系統:網絡爬蟲子系統、數據展示子系統。其中,網絡爬蟲子系統包括:網頁分析、爬蟲偽裝、設置代理、信息抓取、信息存儲、變動更新功能。數據展示子系統包括:信息展示、作者搜索、提交鏈接功能。網絡爬蟲及數據展示系統的功能結構層次圖如圖4-2所示。圖4-2總體功能結構圖4.4數據庫設計4.4.1概念模型設計數據庫概要模型描述的是把面向對象的方法和數據庫技術結合起來能使數據庫系統的分析。首先將現實世界抽象為信息世界,在將信息世界轉化為機器世界。由于抓取下來的數據信息可存儲于一張數據表中,故此系統不存在E-R圖。4.4.2數據表的設計本系統采用MySQL數據庫作為系統的數據存儲。其特點是性能卓越服務穩定、開放源代碼且無版權制約和運行效率高。其存儲引擎功能支持事務、全文索引、外鍵約束、表空間大小和數據行鎖定。符合此系統的各種邏輯結構。系統爬取到的信息均存放在作者排名信息表里,該表主要存儲了嗶哩嗶哩視頻網站的視頻作者的相關屬性信息。包括昵稱、粉絲數、作者UID、新增粉絲數、排名變化、爬取時間、當前排名。其中主鍵是id(作者編號)。圖書信息表如表4-1所示。表4-1bili_rank_user_info表列名數據類型長度主鍵注釋idint11是作者編號namevarchar60否昵稱follower_countint10否粉絲數uidvarchar60否作者UIDaddfollowerint11否新增粉絲數lastrankint11否排名變化lastmodifydatetime0否爬取時間rankint10否當前排名4.5本章小結本章主要先從系統的設計原則出發,再從系統的總體結構圖介紹了系統中模塊的調用關系和層次關系,然后分析數據功能模塊,最后在介紹數據庫和數據庫表。第5章系統的詳細設計與實現系統的詳細設計是軟件工程開發中一個重要的步驟,主要通過需求分析的結果來設計滿足用戶需求的系統。其中,系統的詳細設計的表示法圖形工具有業務流程圖、業務時序圖。5.1系統的相關功能及實現本系統主要分為網絡爬蟲模塊和數據展示模塊。其中,網絡爬蟲模塊主要包含網頁分析、爬蟲偽裝、設置代理、信息抓取、信息存儲、變動更新等功能的實現。數據展示模塊主要包括信息展示、作者搜索、提交鏈接等功能的實現。該系統的數據展示模塊的實現主要是將請求分發給不同的View進行處理,View再調用相應的Model進行數據的保存或讀取,并且View也會調用相應Template,將Model讀取到的數據與Template進行整合,形成最終頁面后返回給控制器,展示給用戶。5.2網絡爬蟲模塊5.2.1網頁分析對目標網頁進行分析是編寫爬蟲的基礎,了解網頁的加載過程才能更好地通過網絡爬蟲獲取網頁信息,完成數據抓取任務。首先打開一個嗶哩嗶哩視頻網站中視頻作者個人主頁,可以看到個人粉絲數據在該頁面中有體現,如下圖5-1所示。圖5-1作者信息詳情頁但當我們查看網頁源代碼時,發現源代碼中并不包含這些信息,如下圖5-2所示。可知通過直接獲取網頁源代碼的方式,是無法爬取作者粉絲數據的。圖5-2網頁源代碼通過重新刷新頁面發現,在最初顯示網頁頁面時,會先顯示一個沒有數據的空白模板,然后畫面卡頓一下之后,才會出現全部內容,這個過程就是瀏覽器向網站服務器重新請求數據的過程。可以注意到頁面其實并沒有整個刷新,也就意味著頁面的鏈接沒有變化,但是網頁中卻多了新內容,也就是卡頓之后的新增內容。這就是Ajax獲取新數據并呈現的過程。初步了解了該站點是通過Ajax獲取新數據后,這里就要對它的基本原理有一個了解。發送Ajax請求到網頁更新的這個過程可以簡單的分為三步:發送請求;解析內容;渲染頁面。這里需要做的就是模擬Ajax請求的發送,然后從服務器獲得返回的響應,進行解析。所以需要了解這些請求是怎么發送的,發往哪里,發了哪些參數。知道了這些,就可以使用Python模擬這個發送過程,獲取到其中的結果。這里就需要借助瀏覽器的開發者工具,此次開發過程中使用的是Chrome瀏覽器。使用瀏覽器打開目標站點,右鍵然后選擇彈出的快捷菜單中的“檢查”選項,此時便會彈出開發者工具,如圖5-3所示:圖5-3開發者工具切換到Network選項卡,向下滑動網頁,可以發現這里出現了非常多的條目,如圖5-4所示:圖5-4Network面板Ajax有其特殊的請求類型:xhr。我們可以選擇XHR選項卡,過濾出Ajax請求。通過分析發現一個名為”info?mid=xxxxxxxx&jsonp=jsonp”的請求包含了視頻作者id,切換到Response選項卡觀察到真實的返回數據,如圖5-5所示:圖5-5Response內容可以看到這個請求返回了視頻作者的各種個人信息,通過對網頁的繼續分析,又陸續找到了幾個請求接口,可以獲得更加全面的信息,后續通過程序模擬這些Ajax請求,就可以獲取到我們所需要的全部信息了。5.2.2爬蟲偽裝通過測試發現,簡單的直接請求該地址,嗶哩嗶哩視頻網站服務器會返回錯誤碼412,多次測試發現,嗶哩嗶哩會對請求進行檢測,如不是正常瀏覽器請求會被攔截。所以在發送請求時,需要通過添加Headers信息將爬蟲程序偽裝成瀏覽器請求,方可實現正常請求。這里可以通過瀏覽器開發者工具來查看Headers信息,如圖5-6所示:圖5-5請求頭Headers信息經多次測試發現,在發送請求時,需添加上Headers中的user-agent信息,既可通過嗶哩嗶哩服務器的檢查,模擬成為普通用戶通過瀏覽器對于嗶哩嗶哩網站的訪問,既完成了爬蟲的偽裝。5.2.3設置代理爬蟲程序從本質上來講也是瀏覽網頁的用戶,只是不那么守規矩的特殊用戶而已。服務器通常不喜歡這類用戶,所以會采取各種手段識別和禁止爬蟲用戶。比較常見的就是判斷訪問頻率,發現某個IP訪問異常則會封禁該IP地址。此時,使用代理IP就十分有必要了,可以極大的提高爬蟲的穩定性。但是網絡上很多代理IP提供商都需要付費,對成本要求較高,為了降低開發成本,在選擇代理IP時,選擇了Github上個人提供的免費代理服務,如圖5-5所示。圖5-5免費代理IP庫該免費代理IP庫,通過抓取代理IP,在檢驗其可用性之后提供給使用者。在爬蟲編寫時,通過指定的URL請求可用的代理IP,將其封裝進爬蟲的請求過程中,在爬取過程中頻繁更換IP地址,實現了爬蟲程序的隱藏,提高了系統的穩定性。5.2.4信息抓取與存儲通過前面發現的請求接口,可以使用Requests庫編寫爬蟲,模擬瀏覽器訪問獲取視頻作者的昵稱、粉絲數等信息。請求完成后服務器返回的是Json格式的文本,這里就需要對所獲得數據進行清洗,篩選出所需要的信息。這里可以通過Python的JSON庫完成解析,關鍵代碼如圖5-6所示。圖5-6JSON解析獲取到有效信息之后,通過Django的數據庫接口QuerySetAPI將信息保存到本地MySQL數據庫中,完成數據存儲。5.2.5變動更新視頻作者的各類信息每時每刻都在發生著變化,為了讓數據保持真實有效,定時對數據進行更新是不可或缺的,如果人工執行更新程序,會增加大量的重復勞動,本系統暫時部署在Windows平臺上,通過Windows系統自帶的計劃任務功能可以定時自動執行更新程序,完成變動更新任務。通過設置定時任務,在每日凌晨自動執行爬蟲程序,完成數據更新工作,保證了數據的準確性。5.3數據展示模塊5.3.1信息展示網絡爬蟲模塊獲取到的數據,是直接存儲在數據庫中的,只有通過前臺展示,才能讓數據更加清晰、直觀。這里使用Django框架,將作者的排名情況以表格的形式直觀呈現,使用者可以看到嗶哩嗶哩視頻網站前一百名作者的昵稱、粉絲數、粉絲變化情況已經排名變化情況,對于排名變化的部分,還加上了高亮的箭頭,有更好的視覺效果。具體展示效果如圖5-7所示。圖5-7信息展示界面5.3.2作者搜索使用者也可以在排名前一百名的視頻作者中,搜索自己感興趣的視頻作者,相關的搜索結果會直接展示在頁面中,使用者可以點擊作者昵稱直接跳轉到該作者的嗶哩嗶哩個人主頁,查看其個人動態。搜索效果如圖5-8所示。圖5-8搜索展示頁面5.3.3提交鏈接當使用者認為自己喜歡的視頻作者不在榜單中時,雖然這種情況不太可能出現,但是還是給使用者提供一個提交視頻作者主頁鏈接的入口,使用者提供的視頻作者會在下一次爬取任務時加入爬取列表,以保證數據的準確性,提交視頻作者的功能如圖5-9所示。圖5-9提交鏈接界面5.4本章小結本章主要從系統的技術層面出發,分為網絡爬蟲模塊和數據展示模塊,在分述網絡爬蟲模塊采用Requests庫、JSON解析、網絡代理等,數據展示模塊主要采用Django框架。然后描述了爬蟲模塊是如何獲取數據的,最后從信息展示出發,編寫系統是如何向使用者展示數據的。第6章系統的測試6.1軟件測試方法軟件系統測試是對所有軟件項目進行的整體的性能考核。換句話說,軟件測試是一種實際輸出與預期輸出之間的審核或者比較\t"/item/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95/_blank"過程。軟件測試對于整個系統來說是非常重要的一個環節。在測試的過程中,負責測試的人員應滿足一下條件:測試應盡早進行,在需求階段就得開始;程序員應避免檢查自己的程序,軟件測試應交由第三方負責;充分注意集群現象;制定嚴格的測試計劃,并且要有指導性;妥善保管測試計劃、測試用例、出錯統計和最終分析報告,給維護時提供方便。軟件測試的方法有很多,例如白盒測試、黑盒測試、單元測試、集成測試、性能測試等測試方法。6.2本系統的測試本軟件測試方法采取黑盒測試。黑盒測試是根據軟件的規格對軟件進行的一種測試。軟件測試人員以用戶的角度,通過對各種輸出和觀察的各種輸出結果來發現軟件存在的各種難以找到的缺陷,而不應該關心程序的具體實現的一種軟件測試的方法。6.2.1爬蟲功能測試爬蟲測試主要是為了檢測系統中網絡爬蟲模塊是否能運行正常,在執行爬蟲程序時,爬蟲是否能從目標網站成功獲取到數據,能否將獲取到的數據存儲到本地數據庫中,如果能請求到數據并將有效信息存入數據庫,則測試成功。爬蟲運行時的日志信息如圖6-1所示。圖6-1爬蟲運行時的日志信息存入數據庫的信息如圖6-2所示。圖6-2數據庫中記錄的信息6.2.2搜索功能測試搜索功能測試主要是用于檢測搜索功能模塊是否能正常運行。使用者在搜索框內填寫搜索關鍵字,如果通過這些關鍵字可以檢索到相關視頻作者,則測試成功,如果檢索不到相關作者,則測試失敗。搜索功能測試結果如圖6-3所示。目的:檢測搜索功能是否能正常使用;前提:輸入搜索關鍵字;測試方法:手工。圖6-3關鍵字搜索結果6.2.3提交鏈接功能測試提交鏈接功能測試主要是檢測提交鏈接功能模塊是否能正常運行,要對使用者提交的鏈接進行校驗,如果不是正確的鏈接需要提醒使用者輸入錯誤,重新檢查鏈接的正確性。如果成功提交正確鏈接,則測試成功,如果鏈接格式錯誤卻提交成功,沒有錯誤提醒,則測試失敗。提交鏈接功能測試用例如表6-1所示。目的:檢測使用者提交鏈接功能是否正常運行;前提:進入提交鏈接模塊;測試方法:手工。表6-3密碼修改功能測試用例序號輸入預期結果實際結果測試結果1輸入隨機一串字符,不是正確鏈接提示:請輸入UP主主頁鏈接提示:請輸入UP主主頁鏈接通過(續表6-3)序號輸入預期結果實際結果測試結果2輸入其它鏈接:/提示:請輸入UP主主頁鏈接提示:請輸入UP主主頁鏈接通過3輸入正確格式:/12312提交成功,提示:感謝您的提交提價成功,提示:感謝您的提交通過6.3本章小結本章主要說明了軟件測試對于系統的重要性,軟件測試使用了黑盒測試,在詳細描述系統的功能用例及用例模塊是否正常使用,經過對功能測試,全部用例都正常運行。結論本設計首先對網絡爬蟲及數據展示系統的研究背景、意義和對國內外圖書館的研究現狀進行了介紹,然后從經濟可行性、技術可行性和操作可行性分別進行了細致分析,又從系統的需求分析與功能需求分析出發,概括了系統中實現的所有功能,接著在進行了數據庫的概念模型設計,在詳細設計階段分網絡爬蟲模塊和數據展示模塊分別介紹了系統的實現,又通過黑盒測試對系統功能測試,最后是進行對設計的總結。網絡爬蟲及數據展示系統,使用Python語言開發,編寫網絡爬蟲自動化的獲取網絡上的有效數據,使用當今較流行的Django框架進行編寫前端展示界面和MySQL數據庫對信息進行存儲。本系統包括網絡爬蟲模塊和數據展示模塊,其中網絡爬蟲模塊包括:爬蟲偽裝、網絡代理等功能,數據展示模塊實現對爬取結果的直觀展示,包括:信息展示,作者搜索等功能。本應用系統功能明確、界面友好、操作簡便、效率高。但由于開發經驗不足,技術的限制等原因,本系統還存在著以下的缺點:展示界面略顯簡單、爬蟲效率仍可優化等。在以后的學習生活中,可以對本系統持續維護完善,豐富數據展現形式,增添多種圖表,使系統更加完美。致謝四年時光轉瞬即逝,回首這四年的點點滴滴,有太多美好的回憶,見證了太多的成長,但是美好的時光總是短暫的,四年的大學生活即將結束。即將離開校園之際,我們卻因為疫情不能返回校園,這樣的告別,又平添許多傷感。但是回首四年時光,我心中感慨萬千,對于母校、老師、同學和家人,有太多想說的話,是他們在這四年里陪我一路走來,這里我要特別感謝我的指導老師趙老師,趙老師悉心細致的教誨和無私的幫助,特別是她廣博的學識、深厚的學術素養、嚴謹的治學精神和一絲不茍的工作作風使我終生受益,在此表示真誠地感謝和深深的謝意。在此次畢業設計的完成以及畢業設計說明書的撰寫過程中,趙艷芹老師傾注了大量的心血和汗水,無論是在畢業設計的選題、構思和資料的收集方面,還是在畢業設計說明書的成文定稿方面,我都得到了趙艷芹老師悉心細致的教誨和無私的幫助。經過她這一段時間的幫助和我的自我努力下,畢業設計已經完成并且最后定稿。回顧此次畢業設計完成的全過程,即艱辛又充實,在完成畢業設計的同時積累了大量開發經驗,對以后的學習工作大有裨益。最后再次衷心感謝所有給予過我關心、幫助的支持的人,謝謝你們!參考文獻瑞安·米切爾.Python網絡數據采集[M].南京:東南大學出版社,2018.崔慶才.網絡爬蟲開發實戰[M].北京:人民郵電出版社,2018劉碩.精通Scrapy網絡爬蟲[M].北京:清華大學出版社,2017.熊慧芳.網絡爬蟲關鍵技術的應用探討[J].計算機產品與流通,2019(09):171.吳永聰.淺談Python爬蟲技術的網頁數據抓取與分析[J].計算機時代,2019(08):94-96.裴麗麗.基于Python對豆瓣電影數據爬蟲的設計與實現[J].電子技術與軟件工程,2019(13):176-177.張露.網絡爬蟲技術在大數據審計中的應用[J].合作經濟與科技,2019(07):190-192.張譽曜,陳媛媛.基于Python下的爬蟲綜述及應用[J].中國新通信,2019,21(06):98.常亮.網站信息采集技術在網絡爬蟲中的應用[J].花炮科技與市場,2019(01):167.繆治.網絡爬蟲技術的研究與實現[J].中國新通信,2019,21(06):70.孫歆,戴樺,孔曉昀,等.基于Scrapy的工業漏洞爬蟲設計[J].網絡空間安全,2017,8(1):66-71章博亨,劉健,朱宇翔,等.基于大數據和機器學習的微博用戶行為分析系統[J].電腦知識與技術,2017,13(6):212-213.彭紀奔,吳林,陳賢,等.基于爬蟲技術的網絡負面情緒挖掘系統設計與實現[J].計算機應用與軟件,2016,33(10):9-13.TANGChong,BAGHERIH,PAISARNSRISOMSUKS,etal.Towardsdesigningeffectivedatapersistencethroughtradeoffspaceanalysis[C]//Proceedingsofthe39thinternationalconferenceonsoftwareengineeringcompanion.2017:353-355.KELLYM,NELSONML,WEIGLEMC.Aframeworkforaggregatingprivateandpublicwebarchives[C]//Proceedingsofthe38thinternationalconferenceonsoftwareengineering.2016:368-379.附錄設計系統部分源代碼應用程序配置文件settings.py內容如下:importos
BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))SECURITYWARNING:don'trunwithdebugturnedoninproduction!
DEBUG=True
ALLOWED_HOSTS=[]
#Applicationdefinition
INSTALLED_APPS=[
'bili_rank.apps.BiliRankConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
MIDDLEWARE=[
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- UDL-2數據記錄儀數據檢測操作方法
- 2026 年護理實習生臨床思維培養帶教實踐
- 2026 年多重耐藥菌感染患者隔離護理課件
- 2026 年護理教學病例研討活動組織方法
- 2026 年急診呼吸困難護理宣講
- 2026年心內科心衰患者體位護理實操教學
- 語文修改病句的技巧
- 2026開學工作總結
- 短道速滑專項試題及答案解析
- 2026年二級建造師《水利水電工程實務》真題及答案解析
- 第01講空間向量及其運算【秋季講義】(人教A版2019選擇性必修第一冊)(原卷版+解析)
- 2026年長江存儲校招測試題及答案
- 2026江蘇南通市海門區招聘區鎮(街道)專職安全巡查員第二批49人考試備考題庫及答案詳解
- 梯度壓力襪用于靜脈血栓栓塞癥防治專家共識
- 工程與社會教學課件469
- 居家老人助浴服務安全作業指引手冊
- 火災應急疏散避險技能培訓
- 鐵塔工程整治方案范本
- 污水在線運維考試題庫及答案2025
- 大學語文陳洪試題及答案
- 森林撫育合同(2025版)
評論
0/150
提交評論