網(wǎng)絡(luò)空間安全概論 實(shí)驗(yàn)7網(wǎng)絡(luò)爬蟲 scrapy爬蟲+文本分類_第1頁
網(wǎng)絡(luò)空間安全概論 實(shí)驗(yàn)7網(wǎng)絡(luò)爬蟲 scrapy爬蟲+文本分類_第2頁
網(wǎng)絡(luò)空間安全概論 實(shí)驗(yàn)7網(wǎng)絡(luò)爬蟲 scrapy爬蟲+文本分類_第3頁
網(wǎng)絡(luò)空間安全概論 實(shí)驗(yàn)7網(wǎng)絡(luò)爬蟲 scrapy爬蟲+文本分類_第4頁
網(wǎng)絡(luò)空間安全概論 實(shí)驗(yàn)7網(wǎng)絡(luò)爬蟲 scrapy爬蟲+文本分類_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

中國礦業(yè)大學(xué)計(jì)算機(jī)學(xué)院2018級本科生課程報(bào)告課程名稱信息內(nèi)容安全報(bào)告題目scrapy爬蟲+文本分類報(bào)告時(shí)間2021.7.6姓名劉昊學(xué)號08182942任課教師曹天杰2020-2021(二)《信息內(nèi)容安全》課程報(bào)告評分表序號畢業(yè)要求課程教學(xué)目標(biāo)考查方式與考查點(diǎn)占比得分12.3目標(biāo)1:掌握信息內(nèi)容安全的基本概念、分類、原理和相關(guān)技術(shù),能夠根據(jù)課程基本知識對信息內(nèi)容安全領(lǐng)域出現(xiàn)的問題進(jìn)行歸類、分析、并有初步分析和解決問題的能力。通過課堂講授和課堂研討掌握信息內(nèi)容安全概念和理論知識。40%3.2目標(biāo)2:掌握信息內(nèi)容安全處理相關(guān)的理論、技術(shù)以及健全的評價(jià)體系,能夠根據(jù)具體問題分析算法、設(shè)計(jì)算法、實(shí)現(xiàn)算法并能綜合評價(jià)算法。24.3目標(biāo)3:掌握信息內(nèi)容安全的基礎(chǔ)知識,針對具體問題和要求選擇正確的技術(shù)路線,通過在實(shí)驗(yàn)環(huán)境中進(jìn)行仿真實(shí)驗(yàn)并能根據(jù)算法特點(diǎn)進(jìn)行攻擊測試和綜合性能評價(jià),得到具有參考價(jià)值的結(jié)論。課程報(bào)告;實(shí)現(xiàn)有關(guān)信息內(nèi)容安全的一個(gè)軟件系統(tǒng)。分析和對比各項(xiàng)技術(shù),選擇相應(yīng)的技術(shù)進(jìn)行算法設(shè)計(jì)并在實(shí)驗(yàn)環(huán)境中進(jìn)行仿真實(shí)驗(yàn)和性能評價(jià),得到有效結(jié)論。60%總分100%評閱人:2021年7月10日報(bào)告摘要使用了python中的scrapy爬蟲框架爬取了豆瓣電影TOP250的電影相關(guān)信息,對這些信息進(jìn)行了初步的統(tǒng)計(jì)分析,使用jieba分詞工具對爬取的電影簡介進(jìn)行了分詞及提取關(guān)鍵詞的操作。還爬取了短評最多的電影的短評,但是由于豆瓣的限制,只能爬取到1500條短評。在進(jìn)行數(shù)據(jù)清洗后將其按照評分打上對應(yīng)的標(biāo)簽,之后生成訓(xùn)練集和測試集。使用fasttext分本分類工具和CNN對訓(xùn)練集進(jìn)行有監(jiān)督的學(xué)習(xí),得到分類模型,最后使用測試集進(jìn)行測試,評估模型的準(zhǔn)確率。關(guān)鍵詞:scrapy;fasttext;監(jiān)督學(xué)習(xí);

報(bào)告正文scrapy爬蟲scrapy是完全使用python語言編寫的開源的爬蟲框架。scrapy是基于twisted異步框架實(shí)現(xiàn)的,所以事件之間是異步非阻塞的。scrapy中已經(jīng)實(shí)現(xiàn)了爬蟲關(guān)鍵的部分,用戶只需要編寫幾個(gè)模塊就可以快速輕松的爬取網(wǎng)頁內(nèi)容。數(shù)據(jù)流圖1.1scrapy數(shù)據(jù)流scrapy框架的數(shù)據(jù)流如圖1.1所示,數(shù)據(jù)流是由引擎控制的,流動順序如下。爬蟲spiders將請求對象requests發(fā)送至引擎。引擎將請求對象交給調(diào)度器對若干請求進(jìn)行調(diào)度,然后接收后續(xù)的請求。調(diào)度器將排序的第一個(gè)請求交給引擎。引擎將請求通過下載中間件送至下載器。請求頁面下載完成后,下載器生成一個(gè)響應(yīng),再通過下載中間件送至引擎。引擎接收響應(yīng)并將其送至爬蟲做處理,中間通過爬蟲中間件。爬蟲處理響應(yīng),將需要的內(nèi)容提取出來,和新的請求一并送至引擎。引擎將提取的內(nèi)容送至管道,將請求送至調(diào)度器。重復(fù)上述步驟,直至調(diào)度器沒有新的請求。組件功能引擎:控制所有組件之間的數(shù)據(jù)流,當(dāng)特定行為發(fā)生時(shí)觸發(fā)事件。調(diào)度器:從引擎接收請求加入請求隊(duì)列,當(dāng)前請求完成后傳送下一請求給引擎。下載器:下載請求頁面,生成響應(yīng),送至引擎。爬蟲:這是需要用戶編寫的組件,實(shí)現(xiàn)解析響應(yīng)、提取內(nèi)容和生成新請求。管道:處理爬取的內(nèi)容,一般為數(shù)據(jù)清洗、驗(yàn)證和可持續(xù)爬蟲,如保存至數(shù)據(jù)庫。下載中間件:處理引擎和下載器之間傳送的請求和響應(yīng)。爬蟲中間件:處理引擎和爬蟲之間傳送的請求、響應(yīng)和抓取的內(nèi)容。全局設(shè)置在settings.py文件中進(jìn)行全局的設(shè)置。主要的設(shè)置有設(shè)置下載延時(shí)為5秒,防止請求下載過快而被檢測到;開啟cookies,之后再進(jìn)行請求的時(shí)候會自動帶上上一次請求的cookies而無需再次添加;設(shè)置不遵循robots協(xié)議,豆瓣只允許幾個(gè)特定的爬蟲爬取其網(wǎng)頁信息,所以想要爬取內(nèi)容就要設(shè)置不遵循robots協(xié)議;設(shè)置日志等級為warning級別,使得輸出信息更簡潔;開啟pipeline,需要指定pipeline及其優(yōu)先級,多個(gè)管道之間通過優(yōu)先級設(shè)置數(shù)據(jù)流通過管道的順序,數(shù)字越小的優(yōu)先級越高,管道內(nèi)也可以區(qū)分爬蟲,讓不同的爬蟲經(jīng)過不同的管道;設(shè)置useragent,之后在請求的時(shí)候都會自動帶上該useragent,一開始使用的是faker庫來偽造useragent,每次請求時(shí)攜帶不同的useragent,但是由于沒有使用代理,請求發(fā)送使用同一IP,useragent不同導(dǎo)致被檢測到,IP被封禁了一段時(shí)間,所以后來直接使用真實(shí)的useragent。關(guān)鍵代碼實(shí)現(xiàn)pipeline負(fù)責(zé)將爬取到的數(shù)據(jù)保存到本地的json文件中。電影信息爬蟲文件中,top250頁面列出了top250榜單,所以以此作為起始URL,請求該頁面之后,在響應(yīng)中使用XPATH提取出頁面中的電影的詳情頁,構(gòu)造新的請求并指定其回調(diào)函數(shù),即由回調(diào)函數(shù)處理其對應(yīng)的響應(yīng)。之后構(gòu)造下一頁的URL,繼續(xù)請求下一頁。因?yàn)閟crapy是基于twisted實(shí)現(xiàn)的異步框架,所以在請求下一頁時(shí),前一頁的請求也在處理,使爬蟲更快速。在電影的詳情頁中,繼續(xù)使用XPATH提取信息,之后將爬取的內(nèi)容傳送給引擎就好了。對于評論的爬取,因?yàn)椴煌娪爸g的短評相關(guān)度不大,所以這里只爬取了兩部電影的短評。另外,豆瓣限制了用戶瀏覽短評的數(shù)量,只能看到500條短評,不管登錄與否,正常用戶使用瀏覽器也是只能看到500條短評。豆瓣還將短評按照評分分成了三類,一星和二星的為低,percenttype=low,三星的為中,middle,四星和五星的為高,high。所以可以分三類請求,各自500條,一共1500條短評。因?yàn)樵谂廊‰娪靶畔r(shí)IP被封禁,要求必須登錄才能瀏覽網(wǎng)頁,所以爬取短評時(shí)需要登錄。如果要模擬登錄的話,豆瓣使用了滑動驗(yàn)證碼,破解滑動驗(yàn)證碼需要使用selenium庫,這里為了簡單,就直接將登錄的cookies添加到請求中,之后的請求就都是登錄狀態(tài)了。請求評論頁之后,再構(gòu)造三種評論的URL,發(fā)起請求并指定其回調(diào)函數(shù)?;卣{(diào)函數(shù)就處理響應(yīng),使用XPATH提取信息并實(shí)現(xiàn)翻頁就好了。數(shù)據(jù)清洗與統(tǒng)計(jì)分析爬取下來的數(shù)據(jù)是比較生硬的,會含有一些空格和\n,部分信息含有不必要的字符,比如短評的數(shù)量,“全部165944條”,可以直接去掉不必要的字符,改為整數(shù)165944,主要是為了方便之后的統(tǒng)計(jì)工作,整數(shù)可以直接排序,原本的字符串不便于統(tǒng)計(jì)。數(shù)據(jù)清洗主要利用pandas庫,先讀取保存在本地的json文件,之后pandas就會形成數(shù)據(jù)幀dataframe并分門別類,然后在數(shù)據(jù)幀的每一類上apply一個(gè)函數(shù)即可實(shí)現(xiàn)數(shù)據(jù)清洗。清洗之后就可以進(jìn)行統(tǒng)計(jì)了。簡單的統(tǒng)計(jì)由排序即可實(shí)現(xiàn),如電影得分排名、電影時(shí)長排名、打分人數(shù)排名等。復(fù)雜一點(diǎn)的統(tǒng)計(jì),如入圍榜單作品數(shù)量最多的導(dǎo)演排名、演員排名、電影所屬國家地區(qū)排名、電影使用語言排名等,就不能直接排序了,但是思路大概是一致的。以導(dǎo)演為例,先遍歷所有電影,得到所有電影導(dǎo)演的列表,之后再遍歷一遍,將作品加入其所屬導(dǎo)演的列表,最后統(tǒng)計(jì)排序就可以了。在電影類別的統(tǒng)計(jì)中,劇情類最多,有184部之多,因?yàn)楹芏嚯娪岸紟в袆∏檫@個(gè)標(biāo)簽;其次是喜劇,56部,愛情55部。國家地區(qū)的統(tǒng)計(jì)中,美國135部,超過了所有其他國家地區(qū)的總和,好萊塢的地位無可撼動,但是在三年前的統(tǒng)計(jì)中,好萊塢的作品數(shù)量是141,好萊塢的地位是有所下降的,罕有新電影入圍,都是些經(jīng)典電影;其次是日本36部,其中多為動畫,日本的動畫行業(yè)還是領(lǐng)先國內(nèi)很多,需要追趕;英國電影也是36部;之后是中國香港29部,港片也在沒落;然后就是中國大陸了,25部,三年前這個(gè)數(shù)字還是16部,說明電影行業(yè)在不斷進(jìn)步,另一方面人們的審美也在變化,這是文化自信的結(jié)果。電影導(dǎo)演的排行中,宮崎駿以8部作品位列第一,其次是諾蘭7部,斯皮爾伯格6部,華人導(dǎo)演李安和王家衛(wèi)以5部作品緊隨其后,鬼才導(dǎo)演姜文也有3部作品入圍,導(dǎo)演榜單上都是些著名大導(dǎo)演。電影語言的排名,毫無疑問英語最多162部,其次是日語46部,然后是漢語普通話41部。爬取的電影信息中還有電影的簡介,使用jieba分詞工具對所有電影的簡介進(jìn)行了分詞和去停用詞,最后使用jieba自帶的關(guān)鍵詞提取函數(shù)提取了關(guān)鍵詞,jieba提供了兩種算法,TF-IDF和TextRank,二者結(jié)果有些許不同。對于短評數(shù)據(jù)同樣先進(jìn)行數(shù)據(jù)清洗,之后按照用戶打分將短評分為兩類,大于等于三星的視為喜歡該電影,小于三星的視為不喜歡該電影。然后給所有短評打上標(biāo)簽,jieba分詞并去掉停用詞,用作之后有監(jiān)督學(xué)習(xí)的訓(xùn)練和測試的數(shù)據(jù)集。fasttext文本分類fasttext是Facebook開源的一個(gè)詞向量與文本分類工具,在2016年開源,典型應(yīng)用場景是“帶監(jiān)督的文本分類問題”。提供簡單而高效的文本分類和表征學(xué)習(xí)的方法,性能比肩深度學(xué)習(xí)而且速度更快。fasttext結(jié)合了自然語言處理和機(jī)器學(xué)習(xí)中最成功的理念。這些包括了使用詞袋以及n-gram袋表征語句,還有使用子字(subword)信息,并通過隱藏表征在類別間共享信息。另外采用了一個(gè)softmax層級(利用了類別不均衡分布的優(yōu)勢)來加速運(yùn)算過程。fasttext識別的標(biāo)簽需要以“__label__”開頭,在數(shù)據(jù)清洗階段按照此格式給所有短評打上標(biāo)簽,“__label__like”和“__label__nlike”。之后使用random庫打亂整個(gè)數(shù)據(jù)集,再按照8:2的比例生成訓(xùn)練集和測試集。fasttext在python中的使用很簡單,已經(jīng)封裝的很好了。導(dǎo)入之后,監(jiān)督學(xué)習(xí)只需要給出訓(xùn)練集和幾個(gè)超參數(shù)學(xué)習(xí)率、迭代次數(shù)等即可生成一個(gè)模型。有了模型就可以使用測試集測試其準(zhǔn)確率。測試結(jié)果并不好,準(zhǔn)確率只有60%+,加上詞袋的參數(shù),設(shè)為2之后,準(zhǔn)確率略微有所提升,約68%。因?yàn)?星中評里面有喜歡的也有不喜歡的,干擾比較大,所以將其去掉。1000條短評,500條好評,500條差評,這時(shí)準(zhǔn)確率達(dá)到了70%。若將中評單獨(dú)作為一類,作三分類的話,fasttext的準(zhǔn)確率只有約53%。因?yàn)檫x擇的電影是《我不是藥神》,這是短評數(shù)量最多的電影,但是這部電影的爭議比較大,所以很多短評不夠典型。之后換用《肖申克的救贖》,top250排名第一的電影。還是將三星及以上的視為喜歡,三星以下的視為不喜歡,此時(shí)fasttext分類的準(zhǔn)確率達(dá)到了72%,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論