基于Python的網(wǎng)絡(luò)爬蟲設(shè)計(jì)與實(shí)現(xiàn)_第1頁
基于Python的網(wǎng)絡(luò)爬蟲設(shè)計(jì)與實(shí)現(xiàn)_第2頁
基于Python的網(wǎng)絡(luò)爬蟲設(shè)計(jì)與實(shí)現(xiàn)_第3頁
基于Python的網(wǎng)絡(luò)爬蟲設(shè)計(jì)與實(shí)現(xiàn)_第4頁
基于Python的網(wǎng)絡(luò)爬蟲設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩73頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

基于Python的網(wǎng)絡(luò)爬蟲設(shè)計(jì)與實(shí)現(xiàn)能滿足用戶的具體需求,人們更加注重特定信息的搜索效率,網(wǎng)絡(luò)爬蟲技術(shù)應(yīng)運(yùn)而生。本設(shè)計(jì)先對(duì)指定URL的網(wǎng)址相關(guān)網(wǎng)頁進(jìn)行分析,找出網(wǎng)頁內(nèi)目標(biāo)信息所在的URL信息規(guī)律;然后選擇BeautifulSoup模塊或lxml的html模塊編寫函數(shù)分級(jí)爬取這些URL;最后將URL對(duì)應(yīng)的網(wǎng)頁中的信息歸類保存到文本文件中。然后利用jieba模塊基于TF-IDF指標(biāo)對(duì)爬取的文本中的信息進(jìn)行分析,再找出詞頻高的詞,做進(jìn)一步分析?;赑y從騰訊新聞網(wǎng)中爬取疫情相關(guān)信息,同時(shí)根據(jù)相關(guān)信息繪制疫情分布圖。兩個(gè)爬蟲實(shí)例表明本設(shè)關(guān)鍵詞:網(wǎng)絡(luò)爬蟲,互聯(lián)網(wǎng),校園,疫情periodofbigdata,commonnetworksearchenginescannotsatisfytheexactneedsofusers,PeoplemoduleortheHTMLmoduleresponsetotheepidemicsituationcausmapaccordingtothe目錄 1.1研究背景和實(shí)際意義 11.2研究現(xiàn)狀 11.3研究方法和內(nèi)容 21.3.1研究方法 21.3.2研究?jī)?nèi)容 2第2章基于Python的網(wǎng)絡(luò)爬蟲技術(shù)的相關(guān)方法 32.1網(wǎng)頁分類 32.1.1靜態(tài)網(wǎng)頁 32.1.2動(dòng)態(tài)網(wǎng)頁 32.2正則表達(dá)式 3 42.4詞云圖生成 52.5數(shù)據(jù)管理 6 6第3章基于Python的校園網(wǎng)新聞信息獲取與分析 73.1基于Python的校園網(wǎng)新聞信息爬蟲實(shí)現(xiàn) 73.1.1網(wǎng)頁信息獲取 3.1.2版塊新聞鏈接列表搜索 3.1.3版塊新聞網(wǎng)頁新聞內(nèi)容獲取 3.2基于Python的校園網(wǎng)新聞信息分析實(shí)現(xiàn) 3.2.1新聞信息數(shù)據(jù)管理 3.2.2新聞內(nèi)容文本分詞 3.2.3停用詞刪除 3.2.4高頻詞詞云制作 3.2.4新聞內(nèi)容詞語分析 第4章基于Python的新型冠狀病毒疫情爬蟲實(shí)現(xiàn) 4.1每日疫情數(shù)據(jù)獲取及曲線圖繪制 4.1.1每日疫情數(shù)據(jù)爬取程序現(xiàn)實(shí) 4.1.2每日疫情數(shù)據(jù)曲線圖繪制程序現(xiàn)實(shí) 234.2各地疫情數(shù)據(jù)獲取及曲線圖繪制 4.2.1各地疫情數(shù)據(jù)爬取程序現(xiàn)實(shí) 264.2.2各地疫情當(dāng)前數(shù)據(jù)曲線圖繪制程序現(xiàn)實(shí) 參考文獻(xiàn) 32致謝 3311.1研究背景和實(shí)際意義21世紀(jì)初起,互聯(lián)網(wǎng)得到了蓬勃的發(fā)展,萬維網(wǎng)成為海量信息的載體,人們希望能夠有效利用萬維網(wǎng)里的數(shù)不勝數(shù)的數(shù)據(jù)信息,所以網(wǎng)絡(luò)信息提取成為這一愿望實(shí)現(xiàn)的關(guān)鍵。網(wǎng)絡(luò)世界里的信息成千上萬,特別是近年來信息量呈指數(shù)增長(zhǎng),人們更加注重從互聯(lián)網(wǎng)上搜索自己想要信息的效率。人們開始運(yùn)用搜索引擎來幫助自己在互聯(lián)網(wǎng)中查找所需要的信息。但是一個(gè)一般的搜索引擎必然存在著一定的局限性,不同背景、不同深度、不同領(lǐng)域的用戶檢索的期望信息一定是不同的,互聯(lián)網(wǎng)用戶只想快速找到自己所需求的信息,但一般的搜索引擎返回的搜索結(jié)果包含了龐大的無效信息。通用搜索引擎在一般情況下不能提供精準(zhǔn)且專業(yè)的信息搜索,同時(shí)查準(zhǔn)率低、無效信息多、也無法避免廣告推送。因此一般的搜索引擎不可能滿足特定用戶的專業(yè)需求,對(duì)于這特等的用戶需求則需要更加準(zhǔn)確的搜素引擎,在大網(wǎng)絡(luò)爬蟲技術(shù)是一種個(gè)性化互聯(lián)網(wǎng)數(shù)據(jù)信息搜索的網(wǎng)絡(luò)數(shù)據(jù)信息獲取技術(shù)。網(wǎng)絡(luò)爬蟲的英文名稱為象的比喻就是蜘蛛(WebSpider)通過網(wǎng)線的顫抖(網(wǎng)頁的鏈接地址)來搜尋食物(網(wǎng)頁)。從任意一個(gè)網(wǎng)頁(一般情況下是首頁)開始,讀取網(wǎng)頁中數(shù)據(jù),從這個(gè)網(wǎng)頁里搜索其它鏈接的地址,通過所找的鏈接地址去找下一個(gè)網(wǎng)頁。按照這種方式不斷循環(huán),直到所選取的網(wǎng)站里全部的網(wǎng)頁全部抓取完為止。假定我們把整個(gè)互聯(lián)網(wǎng)比喻成一個(gè)網(wǎng)站,網(wǎng)絡(luò)蜘蛛就可以運(yùn)用上述方法把互聯(lián)網(wǎng)中一切的網(wǎng)頁都抓取下來。在用大數(shù)據(jù)時(shí)代的到來,意味著更多信息涌入,想要在互聯(lián)網(wǎng)這片大海中撈到想要的東西也愈發(fā)困難,所在這個(gè)節(jié)奏越來越快的世界中,網(wǎng)絡(luò)爬蟲憑借這高效這一點(diǎn),就有著無窮的意義與價(jià)值。在上世紀(jì)九十年代在麻省理工學(xué)院一位叫Matthew的老師就研發(fā)出第一款有為核心的搜索引擎技術(shù)已經(jīng)歷經(jīng)近30年的發(fā)展,網(wǎng)絡(luò)爬蟲已日趨多樣。為滿足不同用戶不同的需求,人們開發(fā)了類型繁多的爬蟲。但爬蟲技術(shù)在西方世界迅速發(fā)展的情況下,2004年前我國(guó)內(nèi)基本對(duì)于網(wǎng)絡(luò)爬蟲技術(shù)沒有什么關(guān)注,從2005年開始國(guó)內(nèi)才開始關(guān)注爬蟲技術(shù)。目前需求量也是也來越大,急需這方面人才。蟲或中型爬蟲。網(wǎng)絡(luò)爬蟲開源系統(tǒng)噴涌式出現(xiàn),因此人們研發(fā)一個(gè)簡(jiǎn)單的抓取系統(tǒng)變得不再困難,但是由于大量程序開源,使得很少有人愿意潛心研究網(wǎng)絡(luò)爬蟲的關(guān)鍵技術(shù)。因此在這種不良的環(huán)境下,小型爬蟲2系統(tǒng)質(zhì)量不高。所以對(duì)于中小爬蟲的發(fā)展還網(wǎng)絡(luò)爬蟲應(yīng)用寬度搜索技術(shù),對(duì)URL進(jìn)行分析,去重。網(wǎng)絡(luò)爬蟲使用多線程技術(shù),讓爬在學(xué)習(xí)使用Python軟件的同時(shí),復(fù)習(xí)網(wǎng)絡(luò)知識(shí),進(jìn)而掌握基于Python軟件的網(wǎng)絡(luò)爬蟲本設(shè)計(jì)擬對(duì)我校近幾年新聞網(wǎng)頁()進(jìn)行分析,獲取相關(guān)網(wǎng)頁URL及網(wǎng)頁文本內(nèi)容,然后利用jieba模塊基于TF-IDF指標(biāo)對(duì)爬取的文本信息進(jìn)行分析,找出新聞中同時(shí)針對(duì)今年對(duì)我國(guó)發(fā)生的新型冠狀病毒肺炎疫情,利用動(dòng)態(tài)網(wǎng)頁獲取方法從騰訊新聞網(wǎng)站()下載疫情分析數(shù)據(jù),并繪制疫情相關(guān)圖。第1章:介紹網(wǎng)絡(luò)爬蟲的歷史背景和實(shí)際現(xiàn)狀,闡述了本設(shè)計(jì)所使用的爬蟲技術(shù),簡(jiǎn)單第2章:介紹一些基于Python的網(wǎng)絡(luò)爬蟲的相關(guān)方法。第3章:校園網(wǎng)新聞信息獲取的程序介紹,分析和運(yùn)行結(jié)果的圖片展示。第4章:新型冠狀病毒疫情爬蟲的程序介紹,分析和運(yùn)行結(jié)果的圖片展示。第5章:總結(jié)。3第2章基于Python的網(wǎng)絡(luò)爬蟲技術(shù)的相關(guān)方法互聯(lián)網(wǎng)里眾多網(wǎng)頁主要將其分為靜態(tài)和動(dòng)態(tài)。當(dāng)然靜態(tài)是相對(duì)于動(dòng)態(tài)而言的,比不是說靜態(tài)就是一點(diǎn)不會(huì)變動(dòng)的。在網(wǎng)站設(shè)計(jì)中,純粹HTML(標(biāo)準(zhǔn)通用標(biāo)記語言下的一個(gè)應(yīng)用)格式的網(wǎng)頁通常被稱為“靜態(tài)網(wǎng)頁”,靜態(tài)網(wǎng)頁是標(biāo)準(zhǔn)的HTML文件,它的文件擴(kuò)展名是.htm、.html,可以包含文本、圖像、聲音、FLASH動(dòng)畫、客戶端腳本和ActiveX控件及JAVA小程序等。靜態(tài)網(wǎng)頁是網(wǎng)站建設(shè)的基礎(chǔ),早期的網(wǎng)站一般都是由靜態(tài)網(wǎng)頁制作的。動(dòng)態(tài)網(wǎng)頁URL的后綴不是.htm、.html、.shtm格式,而是以.aspx、.asp、jsp、.php、.perl、.cgi等形式為后綴,并且在動(dòng)態(tài)網(wǎng)頁網(wǎng)址中有一量,采用動(dòng)態(tài)網(wǎng)頁技術(shù)的網(wǎng)站可以實(shí)現(xiàn)更多的功能,如用戶注冊(cè)、用戶登錄、在線調(diào)查、用戶管理、訂單管理等等。同時(shí)動(dòng)態(tài)網(wǎng)頁實(shí)際上并不是獨(dú)立存在于服務(wù)器上的網(wǎng)頁文件,只有當(dāng)用戶請(qǐng)求時(shí)服務(wù)器才返回一個(gè)完整的網(wǎng)頁。不只有HTML代碼寫出的網(wǎng)頁被稱為動(dòng)態(tài)網(wǎng)頁,這些網(wǎng)頁一般由CSS,JavaScript代碼和HTML代碼一起構(gòu)成網(wǎng)頁,它們用Ajax動(dòng)態(tài)加載網(wǎng)頁的數(shù)據(jù)不一定出現(xiàn)在HTML代碼中,這就需要復(fù)雜的操作。2.2正則表達(dá)式正則表達(dá)式概念:是指一個(gè)用來描述或者匹配一系列符合某個(gè)句法規(guī)則的字符串的單個(gè)字符串。其實(shí)就是一種規(guī)則。有自己特殊的應(yīng)用。是一個(gè)特殊的字符序列,它能幫助你方便的檢查一個(gè)字符串是否與某種模式匹配。1.靈活性、邏輯性和功能性非常強(qiáng)。2.可以迅速地用極簡(jiǎn)單的方式達(dá)到字符串的復(fù)雜控制。4re模塊使Python語言擁有全部的正則表達(dá)式功能。比如:re.match嘗試從字符串的起始位置匹配一個(gè)模式,如果不是起始位置匹配成功的話,match()就返回none。re.search掃描整個(gè)字符串并返回第一個(gè)成功的匹配。pile函數(shù)根據(jù)一個(gè)模式字符串和可選的標(biāo)志參數(shù)生成一個(gè)正則表達(dá)式對(duì)象。該對(duì)象擁有一系列方法用于正則表達(dá)式匹配和替換。compile函數(shù)用于編譯正則表達(dá)式,生成一個(gè)正則表達(dá)式(Pattern)對(duì)象,供match()和search()這兩個(gè)函數(shù)使用。re.findall方法能夠以列表的形式返回能匹配的子串中文分詞,即ChineseWordSegmentation,將一個(gè)漢字序列進(jìn)行切分,得到一個(gè)個(gè)單獨(dú)的詞。表面上看,分詞其實(shí)就是那么回事,但分詞效果好不好對(duì)信息檢索、實(shí)驗(yàn)結(jié)果還是有很大影響的,同時(shí)分詞的背后其實(shí)是涉及各種各樣的算法的。中文分詞主要應(yīng)用于信息檢索、漢字的智能輸入、中外文對(duì)譯、中文校對(duì)、自動(dòng)摘要、自動(dòng)分類等很多方面。下面就以信息檢索為例來說明中文分詞的應(yīng)用。例如:“制造業(yè)和服務(wù)類來處理,結(jié)果是檢索“和服”的相關(guān)信息,會(huì)將他們都檢索到,在信息量少的情況下,似乎還能夠忍受,如果是海量信息,這樣的結(jié)果就會(huì)令人討厭了。通過引入分詞技術(shù),就可以使被當(dāng)做一個(gè)詞來處理,那么檢索“和服”當(dāng)然不會(huì)將它檢索到,使得檢索結(jié)果更準(zhǔn)確,效率也會(huì)大幅度的提高。所以中文分詞的應(yīng)用會(huì)改善我們的生活,使人們真正體會(huì)到科技為我所用。從排序里取出預(yù)定前N個(gè)最優(yōu)文本特征作為原始語料文本特征子集?;谠~頻和逆文檔頻率的TF-IDF算法是一種十分流行的文本特征選取算法。TF和IDF分別為詞頻和逆文檔頻率,TF-IDF是一種常用的加權(quán)指標(biāo),多用于信息檢索與數(shù)據(jù)挖掘。基于TF-IDF的特征選擇思想是:如果某個(gè)詞在某篇文章中出現(xiàn)的頻率很高,在其他文章中出現(xiàn)的頻率相對(duì)較低,那么就說明這個(gè)詞在這篇文檔中比較重要,即可作為這篇文章的一個(gè)分類特。5文檔頻率值越低。某詞語在某特定文件內(nèi)的高詞頻,以及其在整個(gè)文件集合中的低逆文檔頻率,可以得出較高的TF-IDF值。基于TF-IDF指標(biāo)可以過濾掉語料庫(kù)文檔中普遍出現(xiàn)的詞語,保留在某些文檔中出現(xiàn)頻次較高的具有豐富分類特性的重要詞語(后文簡(jiǎn)稱特征詞)。在現(xiàn)在互聯(lián)網(wǎng)信息時(shí)代,我們能在各種手機(jī)app或計(jì)算機(jī)網(wǎng)頁上看見各式各樣的詞云圖,詞云圖可以幫助我們從龐大且雜亂的信息中提取出現(xiàn)概率最高的詞,讓使用者更加清楚且直觀的看到有效信息。詞云庫(kù)把詞云當(dāng)作一個(gè)對(duì)象,WordCloud()是一個(gè)文本中與其相對(duì)的詞云。本設(shè)計(jì)依據(jù)詞語出現(xiàn)頻率高低的來繪制圖片,同時(shí)設(shè)定詞云圖的大小、樣式、顏色等。wordcloud=WordCloud("simhei.ttf",)wc=WordCloud(font_path=fontpath,#設(shè)置字體路徑max_words=1000,#詞云顯示的最大詞數(shù)6max_font_size=100,#字體最大值min_font_size=10,#字體最小值random_state=42,#隨機(jī)數(shù)collocations=False,#避免重復(fù)單詞max_words=200#要顯示的詞的最大個(gè)數(shù)mask=aimask,#造型遮蓋放縮才有效)word_frequence={x[0]:x[1]forxinwords_count.head(50).values}#words_count前50行數(shù)據(jù),即詞頻前50的詞匯word_cloud=wc.fit_words(word_frequence)#根據(jù)詞頻生成詞云plt.figure(dpi=50)#通過這里可以放大或縮小plt.axis("off")#隱藏坐標(biāo)plt.imshow(word_cloupandas提供了大量能使我們快速便捷地處理數(shù)據(jù)的函數(shù)和方法。DataFrame是Python中Pandas庫(kù)中的一種數(shù)據(jù)結(jié)構(gòu),它類似excel,是一種二維表DataFrame函數(shù)是創(chuàng)建一個(gè)二維表,傳入?yún)?shù),是所存放的數(shù)據(jù)。BeautifulSoup支持Python標(biāo)準(zhǔn)庫(kù)中的HTML解析器,還支持一些第三方的解析器。BeautifulSoup最主要的功能是從網(wǎng)頁抓取數(shù)據(jù)。soup=BeautifulSoup(article_doc,'html.parser')利用BeautifulSoup模塊的find_all()函數(shù)搜索新聞信息。將相關(guān)信息按指定順序存入文本文件。soup=BeautifulSoup(listpage,'html.parserf)#利用BeautifulSoup模塊利用標(biāo)簽a的兩個(gè)屬性(href和class)找該對(duì)應(yīng)的鏈接條件7第3章基于Python的校園網(wǎng)新聞信息獲取與分析依照用戶設(shè)定的規(guī)則獲取互聯(lián)網(wǎng)網(wǎng)頁中的文字,圖片或者一切內(nèi)容的一組程序或腳本就是網(wǎng)絡(luò)爬蟲,網(wǎng)絡(luò)爬蟲的重要作用簡(jiǎn)單來說就是讓互聯(lián)網(wǎng)網(wǎng)頁的內(nèi)容下載到本地從而本地有了一個(gè)鏡像備份。時(shí)至今日互聯(lián)網(wǎng)爆炸的時(shí)代,幾乎所有網(wǎng)頁都會(huì)提供給互聯(lián)網(wǎng)網(wǎng)民們大量的信息,但是這些龐大的數(shù)據(jù)中大部分都是用戶不需要的,就算是專門搜索或者在相關(guān)的主題網(wǎng)頁中,想要找到用戶心儀的信息也是十分困難的。在龐大的數(shù)據(jù)下需要互聯(lián)網(wǎng)用戶一個(gè)一個(gè)去鑒別,這是十分費(fèi)心費(fèi)力的一件事。所以,就可以專門設(shè)計(jì)一個(gè)符合用戶需求主題的爬蟲進(jìn)行精準(zhǔn)搜索,方便快捷地獲取用戶需要的數(shù)據(jù)。主題網(wǎng)絡(luò)爬蟲就完美的符合用戶需要。高網(wǎng)速大數(shù)據(jù)的今天,主題網(wǎng)絡(luò)爬蟲在Web應(yīng)用中的地位將越發(fā)重要甚至是不可代替。網(wǎng)絡(luò)爬蟲第一步選擇爬取對(duì)象的鏈接地址(即URL),將URL放置在待爬取的隊(duì)列里;第二步從待抓取URL隊(duì)列里讀取一條URL接著進(jìn)行DNS解析,下載網(wǎng)頁內(nèi)容;第三步分析網(wǎng)頁內(nèi)容,從中搜索符合特定要求的數(shù)據(jù),并按指定格式保存;第四步對(duì)數(shù)據(jù)進(jìn)行分析處理。女女y數(shù)據(jù)分析處理圖1本章網(wǎng)絡(luò)爬蟲和數(shù)據(jù)處理流程本章首先利用利用網(wǎng)絡(luò)爬蟲技術(shù)從我校校園網(wǎng)的校園新聞和綜合新聞兩個(gè)版塊下載、搜索新聞;然后對(duì)新聞進(jìn)行分詞處理,分析其中新聞高頻詞。利用網(wǎng)絡(luò)爬蟲技術(shù)從我校校園網(wǎng)的校園新聞(網(wǎng)址:兩個(gè)主頁下載相關(guān)新聞網(wǎng)址鏈接表。利用request模塊從每個(gè)新聞鏈接中下載新聞并按指定格式保存到文件中。圖2是以校園新聞版塊為例的信息爬取流程圖。綜合新聞版塊新聞爬取方式相同。設(shè)計(jì)8中利用ThreadPool模塊將兩個(gè)版塊主頁網(wǎng)址輸入ThreadPool對(duì)象的map函數(shù),由系統(tǒng)并行搜#兩個(gè)新聞版塊爬取鏈接FILE_CONFIGS=[['/CampusNews/list,xyxpool.closeO#關(guān)閉進(jìn)程池(pool),使其不再接受新的任務(wù)pooljoinO#主進(jìn)程阻塞等待子進(jìn)程的退出,join方法要在close或terminate之后使用飛女文圖2校園新聞版塊信息爬取流程圖根據(jù)流程,編寫主函數(shù)main()程序。偌max_file=300#最大文件數(shù)'accept':'text/html,application/xhtml+xml,application/xml;q=0.9,im'accept-language':zh-CN,zh;q=0.9,Y537.36(KHTML,likeGecko)Chrome/71.0.3578.98Safari/537.36defmain(config):#全局默認(rèn)編碼#信息鏈接地址URL#文件名9#文件夾#獲取每類別的網(wǎng)址網(wǎng)頁內(nèi)容total_page=get_totalforiinrange(total_page):#遍list_page_url=url+'page_{page}.html'.format(page=page)#獲取該類其中一頁的鏈接list_doc=get_html(list_page_url)#獲取該類其中一頁的頁面信息iffile_name=='xyxw':article_urls=get_article_urls(list_doc,ftype)#提取該類其中一頁中各個(gè)鏈接article_doc=get_html(article_url)#提取每類每個(gè)頁面中的信息ifarticle_doc!=":#將爬取信息中特定信息存入文件中flag=save_article(article_docifflag:print(保存%s類第%d個(gè)文件%(file_name,file_num))iffile_num>max_file:#每類信息最多保存500個(gè)文件breakiffile_num>max_file:break本設(shè)計(jì)實(shí)現(xiàn)爬取的關(guān)鍵程序流程圖如圖3開始是total_page=get.totd_page(doc)是是是fle_path=dir_path+file_name+tr(fle_num)+'t是利用reqests模塊獲取指定網(wǎng)址URL的頁面信息。設(shè)置了最大重試次數(shù)為3次,如果3次請(qǐng)求目標(biāo)URL都失敗則拋出異常。對(duì)于請(qǐng)求返回的狀態(tài)碼為200的響應(yīng),將以字符串的形式返回請(qǐng)求到的頁面HTML代碼。具體代碼如下:session=requests.sessionO#開啟會(huì)話,可以跨請(qǐng)求保持某些參數(shù)session.mount('https://,HTTrequest=requests.get(url=url,headers=HEADERS,timeout=30)#根據(jù)網(wǎng)址和HEADERS請(qǐng)求request.close()#關(guān)閉請(qǐng)求ifrequest.status_code==200:request.encoding="utprint('無法獲取文件信息)敗請(qǐng)本hy圖4網(wǎng)頁信息獲取流程圖3.1.2版塊新聞鏈接列表搜索利用BeautifulSoup模塊和re模塊從校園新聞和綜合新聞兩個(gè)版塊主頁中獲取總頁數(shù)和各自的子網(wǎng)頁鏈接地址列表。每個(gè)版塊總頁數(shù)只需要用re模塊的findall()函數(shù),找到其中匹配的參數(shù)即可。代碼如下:defget_total_page(doc):#從doc字符串中提取出頁碼和總頁數(shù)fdefget_article_urls(listpage,ftype):#獲取鏈接地址列表base_url='https://www.sontan.edelse:#綜合新聞base_url='https://www.sontan.soup=BeautifulSoup(listpage,'html.parser)#利用BeautifulSoup模塊#利用標(biāo)簽a的兩個(gè)屬性(href和class)找該對(duì)應(yīng)的鏈接條件urls_tree=soup.find_all('a,href=pile(/CampusNews/'),celse:#綜合新聞urls_tree=soup.find_all('a',href=pile(/GeneralNews/'),cifurl.startswith('http'):#以http開頭的字符串(即鏈接地址)article_urls.append(base_url+url)#不以http開頭的字符串,則基地址+鏈接目標(biāo)網(wǎng)址目標(biāo)網(wǎng)址提取頁碼和頁數(shù)圖5地址鏈接流程圖3.1.3版塊新聞網(wǎng)頁新聞內(nèi)容獲取用re模塊的findall()函數(shù)搜索新聞標(biāo)題和發(fā)布日期,利用BeautifulSoup模塊的find_all()函數(shù)搜索新聞信息。將相關(guān)信息按指定順序存入文本文件。具體代碼如下:defsave_article(article_doc,article_url,file_pattitle=re.findall(regex,article_doc,re.DOTALL)[0]#尋找h1標(biāo)簽的內(nèi)容,即文章的標(biāo)題datas=re.findall(regexd,article_doc,re.DOTALL)[0]#尋找日期soup=BeautifulSoup(article_doc,html.parser')#利用BeautifulSoup模塊elements=soup.find_all(p',style=riflen(elements)>0:element=str(element.text)#獲取每一簇信息withopen(file_path,'w',encoding=CODE)asf:#按指定順序?qū)懭胛募.write(content+"n')#第三段:信息主題f.writelines(article_url)#最后一段:信息的鏈接地址defdelspace(string):#去除中文之間的空格保留英文之間的空格string=string.stripO#移除字符串頭尾指定的字符(默認(rèn)為空格或換行符)或字符序列pattern=pile(r'([u4e00-\u9fa5]+)s+([u4e00-\u9fa5]+)s+')#^s'用于匹配空白字符目標(biāo)網(wǎng)址目標(biāo)網(wǎng)址獲取新聞標(biāo)題獲取新聞發(fā)布日期圖6獲取新聞流程圖3.2基于Python的校園網(wǎng)新聞信息分析實(shí)現(xiàn)針對(duì)3.1節(jié)利用網(wǎng)絡(luò)爬蟲技術(shù)獲取的校園新聞和綜合新聞兩個(gè)版塊的相關(guān)新聞信息文件,將新聞文字進(jìn)行數(shù)據(jù)管理、分詞、停用詞刪除、統(tǒng)計(jì)和制作詞云等操作(如圖3所示)。圖7校園新聞版塊信息分析流程圖校園新聞和綜合新聞兩個(gè)版塊所在文件夾內(nèi)的所有文本文件數(shù)據(jù)進(jìn)行收集處理,按類別、標(biāo)題、日期和內(nèi)容進(jìn)行管理。先將字符串生成字典,再將文件存為DataFrame格式。具體代碼如下:deftext_processing(folder_path):forfolderinfolder_list:#遍歷每個(gè)子文件夾new_folderpath=os.path.join(folder_path,folder)iffolder=='xyxw':#根據(jù)子文件夾,生成新的路徑#放子文件夾下的txt文件的列表path=os.pathjoin(new_folder_path,withopen(path,mode='r,encoding=CODE)asf:#讀取每一段,順序?qū)⑴cDataFrame列名對(duì)應(yīng)data_dict=dict(zip(COLUMNS,data))#用zipdf_news=DataFrame(data_dict,index=[0])#DataFrame類的方法,將鍵字作為列名df_news.to_csv(news_docu.txt,index=False,header=False,m#讀取出文件中的數(shù)據(jù),以COLUMNS,為列名df_docs=pd.read_csv('news_docu.txt',names=CO#數(shù)據(jù)清洗:如果某條數(shù)據(jù)有缺失值(na數(shù)據(jù))直接刪除整條數(shù)據(jù)df_docs=df_docs.dropna()returndfdocs圖8數(shù)據(jù)管理流程圖必須有實(shí)際意義的寫。利用開源的分詞器 jieba分詞器支持基于TF-IDF對(duì)新聞內(nèi)容分詞。jieba利用jieba分‘content’列進(jìn)行分聞序df_docs['content].values.tolist()#jieba分詞需要list格式current_segment=jieba.lcut(line)#分詞,返回列表圖9分詞流程圖3.2.3停用詞刪除defdrop_stopwords(cifwordinstopwords:#判斷是停用詞則不追加#判斷不是停用詞,則追加#判斷不是停用詞,則以字符串形式追加,用于詞云#追加該行“有效詞”make_wordcloud(all_#制作詞云圖N圖10停用詞流程圖針對(duì)3.2.2得到的新聞信息中的分詞,利用DataFrame類型數(shù)據(jù)的padas方法進(jìn)行分析統(tǒng)計(jì),再利用開源庫(kù)WordCloud繪制50個(gè)高頻詞詞云圖。defmake_wordcloud(all_words):cy_num=50#詞圖中的最高頻的詞條數(shù)df_all_words=pd.DataFrame(f'all_words'all_words})#由列表生成DataFr#先分組all_words,再分類統(tǒng)計(jì)計(jì)數(shù)size,通過分組計(jì)數(shù),統(tǒng)計(jì)每個(gè)詞出現(xiàn)的次數(shù)words_count=df_all_words.groupby(by=[all_words'])[all_words'].agg(nuwords_count.columns=[count]#將每個(gè)詞的詞頻數(shù)據(jù)words_count列名換為count#以count列降序排列words_count=words_count.reset_index().sort_values(by=["count"],ascen#設(shè)置詞云圖片參數(shù),生成詞云對(duì)象wordcloud=WordCloud(font_path="./files/simhei.ttf",background_color="white",max_font_size=80)word_frequence={x[0]:x[1]forxinwords_count.head(cy_num).values}wordcloud=wordcloud.fit_words(word_frequence)#根據(jù)詞頻生成詞云圖數(shù)據(jù)wordcloud.to_file(wordcloud_songtian.png)#生成詞云圖print('n根據(jù)新聞中詞頻最高的{num}個(gè)詞制作的詞云圖:'format(num=cy_num))plt.show)參加了居動(dòng)十“要上我院田發(fā)展建制長(zhǎng)院校學(xué)表議代會(huì)任去燃落實(shí)圖11校園新聞信息高頻詞詞云圖3.2.4新聞內(nèi)容詞語分析針對(duì)某一新聞頁面內(nèi)的有效新聞信息進(jìn)行分析,利用jieba.analyse.extract_tags方法基于TF-IDF算法從中選取指定數(shù)量的關(guān)鍵詞。具體代碼如下:defword_seq(df_docs,contents_drop,index):print(以下是第{index}號(hào)記錄的內(nèi)容及其高頻詞\n'format(index=index))print(df_docs[content].values.tolistO[index])#index記錄號(hào)的內(nèi)容print(^n網(wǎng)址:'+df_docs[url].values.tolist()[indexJ)#index記錄號(hào)的網(wǎng)址contentsstr="".join(contentsdrop[index])#index記錄號(hào)的內(nèi)容分詞#利用jieba第三方庫(kù)提取#index記錄號(hào)內(nèi)容的分詞,顯示前topK=c_num個(gè)print("".join(jieba.analyse.ex程序運(yùn)行結(jié)果圖如圖12:ereFisdhethesbeeebulltsutcessFully.校 圖12第4章基于Python的新型冠狀病毒疫情爬蟲實(shí)現(xiàn)針對(duì)今年對(duì)我國(guó)發(fā)生的新型冠狀病毒肺炎疫情,利用動(dòng)態(tài)網(wǎng)頁獲取方法從騰訊的新聞網(wǎng)站()下載疫情數(shù)據(jù),將數(shù)據(jù)歸類統(tǒng)計(jì),并繪制疫情數(shù)據(jù)曲線圖。為導(dǎo)入疫情數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行分析和圖形繪制,先導(dǎo)入requests、json、time、datetime、新型冠狀肺炎病毒疫情數(shù)據(jù)爬取目標(biāo)網(wǎng)站是騰訊新聞,該網(wǎng)站提供疫情實(shí)時(shí)追蹤數(shù)據(jù)。如圖6所示,先request.get()方法從騰訊新聞公布疫情新聞數(shù)據(jù)所在的網(wǎng)址url='/g2/getOnsInfo?name=wuwei_ww_cnnt(time.time)*1000)中爬取數(shù)據(jù);再利用json.loads()方法將數(shù)據(jù)轉(zhuǎn)換為易于操作的字典類型;然后利用pd.DataFrame()方法將爬取來的數(shù)據(jù)形成每日疫情二維數(shù)圖13每日疫情數(shù)據(jù)爬取流程4.1.1每日疫情數(shù)據(jù)爬取程序現(xiàn)實(shí)url='/g2/getOnsInfo?name=wuwei_ww_cn_day_codata=json.loads(requests.get(#數(shù)據(jù)動(dòng)態(tài)網(wǎng)址#爬取的數(shù)據(jù)#以鍵字date升序排列#創(chuàng)建數(shù)據(jù)二維表,指定列名#初始化變量month,day=item['date'].split(/)#獲取月和日期rq=datetime.strptime(2020-%s-%s^%(month,day),"%Y-%m-%d)#獲取日期sw=int(item['dead]))#死亡數(shù)data_day.loc[loc]=[rq,qz,ys,zy,sw]#將數(shù)據(jù)為一行下面圖14是運(yùn)行結(jié)果:_ltst置置5Glmnt日期,填有,疑機(jī)數(shù),進(jìn)有救,死亡期4-6?m:graduatjongrujectyiqingveneps_u配而葡病雨jom.(12)(di(圖144.1.2每日疫情數(shù)據(jù)曲線圖繪制程序現(xiàn)實(shí)基于4.1.1程序爬取的數(shù)據(jù)包,導(dǎo)入matplotlib.pyplot和matplotlib.dates模塊包,編寫每日疫情數(shù)據(jù)曲線圖繪制程序如下:#圖標(biāo)題#繪制確診數(shù)plt.plot(date_list,suspect_list,label='疑似數(shù))plt.plot(date_list,heaplt.plot(date_list,dead_list,label='死亡數(shù))plt.rcParams[xtick.direction']='in'#把刻度線設(shè)置在圖的里面plt.gca().xaxis.set_major_formatter(mdates.DateFormatter(%m-%d')#橫軸格式#顯示網(wǎng)格#顯示圖例#保存為文件確認(rèn)圖表標(biāo)題確認(rèn)圖表標(biāo)題尺寸繪制疫情相關(guān)自動(dòng)保存生成圖片圖15繪制流程圖運(yùn)行上述程序,得到如圖16的2020-每日疫情曲線圖。2020-每日疫情曲線圖16數(shù))。由蘭色曲線可知從3月份全國(guó)確診數(shù)上升很慢;2月到4月綠色治愈數(shù)曲線上升很快;紅色死亡數(shù)曲線在確診數(shù)上升期延后10上升較快,后趨于平穩(wěn),表明醫(yī)療技術(shù)的作用顯現(xiàn);黃色疑似數(shù)曲線在3月份是高峰,隨之下降。從圖中看出從一月二十四至二十五號(hào)開始,確診數(shù)和疑似數(shù)開始猛增。二月八號(hào)開始疑似數(shù)開始明顯下降,治愈數(shù)顯著升高。可見一月二十四號(hào)至二月八號(hào)是抗戰(zhàn)疫情最為激烈的時(shí)期,二月二十九號(hào)開始確診數(shù)開始明顯降低,說明疫情逐漸得到控制,專家們所說的拐點(diǎn)即將到來。從圖表中我們也可看出至四月份死亡數(shù)沒有明顯增長(zhǎng),代表著抗擊疫情一線的英如圖17所示,先request.get()方法從騰訊新聞公布疫情新聞數(shù)據(jù)所在的網(wǎng)址url='/g2/getOnsInfo?name=disease_h5&000)中爬取數(shù)據(jù);再利用json.loads()方法將數(shù)據(jù)轉(zhuǎn)換為易于操作的字典類型;然后利用pd.DataFrame()方法將爬取來的數(shù)據(jù)形成各地疫情二維數(shù)據(jù)。圖17各地疫情數(shù)據(jù)爬取流程url='/g2/getOnsInfo?name=disease_h5&calldata_toal=json.loads(requests.get(u#國(guó)內(nèi)各省市分布#省級(jí)統(tǒng)計(jì)ys=int(item[total']['#地市統(tǒng)計(jì)ys=int(item_ds[total']['運(yùn)行程序得到data_china_sf和dat運(yùn)行結(jié)果如下圖18:AA校14"namm*中壓,"tatay"《…),"tatal*:(-),childre'=1-1)1data_ch1Ist54【K'name':"照虛過,today':(…),otal…}。chlldren"(…D),(nan…(olumnnanes:地幣,確給數(shù),好似費(fèi),估殖勤,死亡數(shù)Calummnangs:首份。確論封,經(jīng)從Columnamit:國(guó)家,確的費(fèi),疑想data_de]4st7It'namn':操外鋪入todsy*:(…),total':[…]),(mame:銀川,today:單國(guó)1temdkrtA('nane'i*寧度",'today'('confirm'ie,"conflrucuti'ie,"isvodated"tfalse…('nane':寧東雷賣會(huì)",'today':{'confimtB,conftrCuts'i,"spatdF…f11111宇東領(lǐng)費(fèi)金ttes:Aels.qn.cos/2/atOInfsneiseeIh圖18Permlssians:RWEnd-ofines.cfEnco4.2.2各地疫情當(dāng)前數(shù)據(jù)曲線圖繪制程序現(xiàn)實(shí)plt.xticks(xz,xtk,color='black,rotatplt.xticks(xz,xtk,color='black,rotat運(yùn)行上述程序,得到如圖19和圖20的2020-國(guó)內(nèi)當(dāng)日各省市疫情曲線圖和2020-國(guó)內(nèi)當(dāng)圖202020-國(guó)內(nèi)當(dāng)日各地市疫情曲線圖從各地市當(dāng)日疫情曲線圖可看出,湖北武漢確實(shí)是疫情爆發(fā)的中心,封禁湖北武漢為無奈之舉,但確第5章總結(jié)本設(shè)計(jì)運(yùn)用網(wǎng)絡(luò)爬蟲算法設(shè)計(jì)編寫了爬蟲系統(tǒng)程序,并爬取了廣州大學(xué)松田學(xué)院校園網(wǎng) ()的校園新聞和綜合新聞兩個(gè)版塊的相關(guān)新聞信息文件和騰訊新聞網(wǎng)()的動(dòng)態(tài)網(wǎng)頁獲取疫情數(shù)據(jù)信息,進(jìn)行處理分類,將數(shù)據(jù)歸類統(tǒng)計(jì)分析,并繪制詞云圖和疫情數(shù)據(jù)曲線圖。從過程與結(jié)果來看,網(wǎng)絡(luò)爬蟲能夠改善互聯(lián)網(wǎng)用戶搜索信息的體驗(yàn)與感官,減少不必要的信息攝入,節(jié)省上網(wǎng)搜索時(shí)間,高速提取互聯(lián)網(wǎng)中參考文獻(xiàn)[1]王蕾,安英博,劉佳杰.基于Python的互聯(lián)網(wǎng)金融數(shù)據(jù)采集[J].合作經(jīng)濟(jì)與科技,[2]舒暢,黎洪生.使用Python實(shí)現(xiàn)基于Web的水資源[3]劉洪志.利用Python批量獲取互聯(lián)網(wǎng)中的桌面壁紙[J].電腦編程技巧與維護(hù),[5]王芳,張睿,宮海瑞.基于Scrapy框架的分布式爬蟲設(shè)計(jì)與實(shí)現(xiàn)[J].信息技術(shù),[7]魏冬梅,何忠秀,唐建梅.基于Python的Web信息獲取方法研究[J].軟件導(dǎo)刊,[8]任迪,萬健,殷昱煜,等.基于貝葉斯分類的Web服務(wù)質(zhì)量預(yù)測(cè)方法研究[J].浙江大學(xué)學(xué)報(bào)(工學(xué)版),2017,51(6):1242-1251.[11]NurulAfiqahMatIntegrationofsystemdynamicswithbInternationalStudentProj致謝時(shí)光荏苒,大學(xué)四年的學(xué)習(xí)生活即將結(jié)束,四年間的回憶仿佛還在眼前,老師們的教誨與指引,輔導(dǎo)員們的幫助與開導(dǎo),同學(xué)的鼓勵(lì)與支持,父母的期望與贊許,這些都會(huì)讓我積極進(jìn)步。大學(xué)四年時(shí)光我是快樂和充實(shí)的,自己很幸運(yùn)能結(jié)識(shí)這么多的良師益友,希望祖國(guó)繁榮強(qiáng)大,師長(zhǎng)們身體健康,同學(xué)們前程似錦,感謝自己人生路上的每一個(gè)人。捷鍵與一些電腦小技巧這是高手最常用的第一快捷組合鍵。這個(gè)快捷鍵組合可以將桌面上的所有窗口瞬間最小化,無論是聊天的窗口還是游戲的窗口……只要再次按下這個(gè)組合鍵,剛才的所有窗口都回來了,而且激活的也正是你最小化之前在使用的窗口!個(gè)更簡(jiǎn)單的辦法,就是按winkey+r!選中自己希望要打開的窗口,松開這個(gè)組合鍵就可以了。而alt+tab+shift鍵則可以反向顯示當(dāng)前打開的窗口。當(dāng)你需要打開資源管理器找文件的時(shí)候,這個(gè)快捷鍵會(huì)讓你感覺非?!八?再也不用騰出一只手去摸鼠標(biāo)了!winkey指的是鍵盤上刻有windows徽標(biāo)的鍵●。wi鍵盤,這種鍵盤在原來101鍵盤的左右兩邊、ctrl和alt鍵之間增加了兩個(gè)windwos鍵和一個(gè)屬性關(guān)聯(lián)鍵。107鍵盤又稱為win98鍵盤,比104鍵多了睡眠、喚醒、開機(jī)等電源管理鍵,這3個(gè)鍵大部分位于鍵盤的右上方。F10或ALT放入回收站激活當(dāng)前程序的菜單欄在win9x中打開關(guān)閉程序?qū)υ捒騽h除被選擇的選擇項(xiàng)目,如果是文件,將被放入回收站刪除被選擇的選擇項(xiàng)目,如果是文件,將被直接刪除而不是新建一個(gè)新的文件保存當(dāng)前操作的文件剪切被選擇的項(xiàng)目到剪貼板CTRL+INSERT或CTRL+C復(fù)制被選擇的項(xiàng)目到剪貼板SHIFT+INSERT或CTRL+V粘貼剪貼板中的內(nèi)容到當(dāng)前位置ALT+BACKSPACE或CTRL+Z撤銷上一步的操作ALT+SHIFT+BACKSPACE重做上一步被撤銷的操作Windows鍵+D:最小化或恢復(fù)windows窗口Windows鍵+U:打開“輔助工具管理器”Windows鍵+EWindows鍵+R重新將恢復(fù)上一項(xiàng)操作前窗口的大小和位置打開資源管理器打開當(dāng)前活動(dòng)項(xiàng)目的快捷菜單在放入CD的時(shí)候按下不放,可以跳過自動(dòng)播放CD。在打開word的時(shí)候按下不放,可以跳過自啟動(dòng)的宏關(guān)閉當(dāng)前應(yīng)用程序打開程序最左上角的菜單切換當(dāng)前程序一個(gè)窗口)在IE中:切換當(dāng)前程序?qū)indows下運(yùn)行的MSDOS窗口在窗口和全屏幕狀態(tài)間切換將當(dāng)前屏幕以圖象方式拷貝到剪貼板將當(dāng)前活動(dòng)程序窗口以圖象方式拷貝到剪貼板關(guān)閉當(dāng)前應(yīng)用程序中的當(dāng)前文本(如word中)切換到當(dāng)前應(yīng)用程序中的下一個(gè)文本(加shift可以跳到前顯示前一頁(前進(jìn)鍵)顯示后一頁(后退鍵)在頁面上的各框架中切換(加shift反向)刷新強(qiáng)行刷新2.刪除以下文件夾中的內(nèi)容:x:\DocumentsandScttings\用戶名\LocalScttings\Temp\下的所有文件(用戶臨時(shí)文件)x:\DocumentsandSettings川戶名\L件(頁而文件)x:\DocumentsandSettings\用戶名\LocalSettings\History\下的所有文件(歷史紀(jì)錄)x:\DocumentsandSettings\用戶名\Recent\下的所有文件(最近瀏覽文件的快捷方式)x:WINDOWS\Temp\下的所有文件(臨時(shí)文件)x:WINDOWSiServicePackFiles(升級(jí)spl或sp2后的備份文件)x:WINDOWS\DriverCache\i386下的壓縮文件(驅(qū)動(dòng)程序的備份文件)x:WINDOWSSoftwareDistribution\d頭的隱藏文件4.然后對(duì)磁盤進(jìn)行碎片整理,整理過程中請(qǐng)退出一切正在運(yùn)行的程序點(diǎn)”(最好以當(dāng)時(shí)的口期作為還原點(diǎn)的名字)7、在各種軟硬件安裝妥當(dāng)之后,其實(shí)XP需要吏新文件的時(shí)候就很少了。刪除系統(tǒng)備份文件吧:開始→運(yùn)行→sfc.exe/purgecache近3xxM。(該命令的作川是立即清除"Windows文件保護(hù)"文件高速緩存,釋放出其所占據(jù)的空間)8、刪掉\windows\system32\dllcache下dll檔(減去200——300mb),這是備用的dl檔,只要你已拷貝了安裝文件,完全可以這樣做。9、XP會(huì)自動(dòng)備份硬件的驅(qū)動(dòng)程序,但在硬件的驅(qū)動(dòng)安裝正確后,一般變動(dòng)硬件的可能名稱為driver.cab,你直接將它刪除就可以了,通常這個(gè)文件是74M。都合適白己的使用,比如IMJP8_1H文輸入法、IMKR6_1韓文輸入法這些輸入法,如果用不著,我們可以將其刪除。輸入法位于windowsime\文件夾中,全部占川了88M的空12、另外,保留著\windows\help日錄

溫馨提示

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

評(píng)論

0/150

提交評(píng)論