網絡空間安全概論 實驗7網絡爬蟲 scrapy爬蟲+文本分類_第1頁
網絡空間安全概論 實驗7網絡爬蟲 scrapy爬蟲+文本分類_第2頁
網絡空間安全概論 實驗7網絡爬蟲 scrapy爬蟲+文本分類_第3頁
網絡空間安全概論 實驗7網絡爬蟲 scrapy爬蟲+文本分類_第4頁
網絡空間安全概論 實驗7網絡爬蟲 scrapy爬蟲+文本分類_第5頁
已閱讀5頁,還剩3頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

溫馨提示

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

評論

0/150

提交評論