国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Python的豆瓣網(wǎng)站數(shù)據(jù)爬取與分析

2020-12-29 11:57:50簡(jiǎn)悅汪心瀛楊明昕
電腦知識(shí)與技術(shù) 2020年32期
關(guān)鍵詞:網(wǎng)絡(luò)爬蟲數(shù)據(jù)采集數(shù)據(jù)分析

簡(jiǎn)悅 汪心瀛 楊明昕

摘要:大數(shù)據(jù)時(shí)代,隨著社交網(wǎng)絡(luò)的發(fā)展,社會(huì)媒體數(shù)據(jù)量呈現(xiàn)指數(shù)級(jí)增長(zhǎng)。通過基于Python的網(wǎng)絡(luò)爬蟲程序爬取豆瓣網(wǎng)站的有關(guān)數(shù)據(jù),使用非關(guān)系型數(shù)據(jù)庫MongoDB存儲(chǔ)數(shù)據(jù),并利用Matplotlib和PyEcharts對(duì)爬取結(jié)果進(jìn)行了可視化分析。對(duì)豆瓣電影和圖書Top250排行榜的數(shù)據(jù)進(jìn)行可視化分析,可以了解作品排名、評(píng)分、年份、地區(qū)和導(dǎo)演及作家的分布情況,從而分析得出數(shù)據(jù)之間的相關(guān)性和文化產(chǎn)業(yè)的發(fā)展趨勢(shì)。

關(guān)鍵詞:Python;網(wǎng)絡(luò)爬蟲;數(shù)據(jù)采集;數(shù)據(jù)分析;可視化

中圖分類號(hào):G642? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1009-3044(2020)32-0051-03

Abstract:In the era of big data, with the development of social networks, the amount of social media data shows exponential growth. Through the web crawler based on Python to crawl the relevant data of Douban website, uses MongoDB database to store the data, and uses Matplotlib and PyEcharts to visually analyze the crawling results. Through visual analysis of the Top 250 ranking data of Douban films and books, ranking, rating, year, region and distribution of directors and writers can be understood, so as to analyze the correlation between the data and the development trend of cultural industry.

Key words:Python; web crawler; data collection; data analysis; visualization

1引言

隨著互聯(lián)網(wǎng)的快速發(fā)展,越來越多的人喜歡在微博、知乎、豆瓣等社交網(wǎng)站上發(fā)表自己對(duì)某些事物的想法、態(tài)度或意見[1]。用戶同時(shí)也會(huì)將自己購買的產(chǎn)品或體驗(yàn)到的服務(wù),在這些社區(qū)式的網(wǎng)站上評(píng)價(jià),這樣通常會(huì)帶動(dòng)他人也前去購買或體驗(yàn),形成口碑效應(yīng)。

社交應(yīng)用及網(wǎng)站上有源源不斷的信息發(fā)布,這些信息中隱含著大量對(duì)我們及企業(yè)有收集價(jià)值的資源。就像用戶評(píng)分和評(píng)價(jià)系統(tǒng)中,用戶不但會(huì)對(duì)作品進(jìn)行評(píng)比,還分享和傳播了作品信息。如果能夠獲取這些數(shù)據(jù)并對(duì)其進(jìn)行分析,可以讓人們挑選到滿意的書籍、選擇出一部精彩的電影,也可以幫助企業(yè)改進(jìn)產(chǎn)品的服務(wù)等。使用爬蟲程序可以高效地對(duì)社交網(wǎng)站上的信息進(jìn)行收集、組織和管理[2]。豆瓣網(wǎng)作為社交網(wǎng)站的代表,提供了在圖書、電影和音樂等方面獨(dú)樹一幟的評(píng)分、推薦及比價(jià)體系,在社交網(wǎng)絡(luò)中產(chǎn)生了深遠(yuǎn)的影響[3]。

2數(shù)據(jù)爬取

2.1 發(fā)起請(qǐng)求

數(shù)據(jù)爬取主要由爬蟲程序來完成,系統(tǒng)根據(jù)目標(biāo)地址定位元素,爬取相關(guān)數(shù)據(jù)并將其存儲(chǔ)在數(shù)據(jù)庫中。通過網(wǎng)絡(luò)爬蟲進(jìn)行數(shù)據(jù)爬取,首先要安裝Requests庫,用于向指定的URL發(fā)起請(qǐng)求,獲取所要爬取的頁面的響應(yīng)信息。爬取網(wǎng)頁最常使用的是通用爬取框架,它最大的作用就是讓用戶有效、穩(wěn)定、可靠地爬取網(wǎng)頁上的內(nèi)容。

2.2 地址獲取

系統(tǒng)想要獲取豆瓣Top250所有作品的信息,就要獲取全部作品的鏈接,進(jìn)入每個(gè)作品的詳情頁面進(jìn)行爬取。但全部作品被分成了10頁,每頁的地址都不相同,無法用同一個(gè)網(wǎng)址獲取。這時(shí)則需要通過翻頁來搜尋網(wǎng)址的規(guī)律。通過對(duì)比,發(fā)現(xiàn)除了第1頁,每一頁網(wǎng)址中都有一個(gè)“?”,后面還跟著參數(shù),這其實(shí)是URL在傳遞某種數(shù)據(jù),不難發(fā)現(xiàn),每頁網(wǎng)址只是最后的“start=”后面的數(shù)值發(fā)生了變化,即從0開始,每頁增加25,這時(shí)使用for循環(huán)語句來請(qǐng)求每頁網(wǎng)址,返回獲取到的地址。

2.3 網(wǎng)頁解析

獲取到豆瓣電影Top250每頁的地址之后,再解析網(wǎng)頁來獲取每個(gè)頁面全部電影的鏈接。Python中的解析庫,比如BeautifulSoup庫,可以用來對(duì)Response獲取的網(wǎng)頁內(nèi)容,按照特定的解析器進(jìn)行結(jié)構(gòu)化的解析。BeautifulSoup庫為可用于從HTML中提取數(shù)據(jù)的高級(jí)頁面創(chuàng)建一個(gè)解析樹,而使得每一個(gè)節(jié)點(diǎn)都成為它的對(duì)象[4]。通常情況下,將其對(duì)象看作成標(biāo)簽對(duì)象,通過soup.標(biāo)簽名的方法,獲得這個(gè)標(biāo)簽的內(nèi)容,而如果要查找這個(gè)標(biāo)簽,則使用soup.select()方法,其中關(guān)鍵點(diǎn)在于對(duì)標(biāo)簽的精確定位,在()內(nèi)的語句來實(shí)現(xiàn)。

2.4 元素定位

獲取到每個(gè)電影的鏈接,然后就能訪問每個(gè)電影的頁面來獲取詳情了。使用正則表達(dá)式和Xpath可以對(duì)所需要的電影信息進(jìn)行定位,從Response中獲取需要的數(shù)據(jù)。正則表達(dá)式是一組字符串的排列組合,主要使用在尋找配合的字符串中,由于其靈活性和邏輯性很強(qiáng),可以速度地完成對(duì)多而雜的字符串的操縱。而Xpath則更加方便,XPath就是XML文檔中的語言,基于XML文件的樹型設(shè)計(jì),運(yùn)用相應(yīng)的公式以各種標(biāo)準(zhǔn)搜尋節(jié)點(diǎn)的手段達(dá)到目的,節(jié)點(diǎn)是順著進(jìn)程的路徑來選擇的,所以它從樹型結(jié)構(gòu)內(nèi)尋找目標(biāo)節(jié)點(diǎn)的能力非常突出,能夠在HTML、XML結(jié)構(gòu)中快速查找想要的信息,因而成為了爬蟲程序在頁面中確定元素位置的首選[5]。

2.5反爬突破

豆瓣網(wǎng)站的服務(wù)器對(duì)于同一賬號(hào)的頻繁請(qǐng)求有限制,只能切換不同的用戶,所以爬蟲最好選擇非登錄狀態(tài)的模式。而且,由于豆瓣的反爬機(jī)制比較完善,更設(shè)置了頻率訪問最大的限度,這意味著豆瓣對(duì)同一IP地址的重復(fù)請(qǐng)求有制約,如果一段時(shí)間內(nèi)請(qǐng)求過于頻繁,這個(gè)IP就會(huì)被封掉。

為了解決這一問題,本文采取了隨機(jī)設(shè)定訪問時(shí)間間隔和隨機(jī)提交用戶代理(User-Agent)頭文件的辦法。使用time.sleep()方法設(shè)置下載時(shí)間間隔,.random()方法每次獲取一個(gè)隨機(jī)數(shù),能夠隨機(jī)延時(shí),降低了IP被封的概率。頭文件在用戶發(fā)起請(qǐng)求時(shí),通過提交相關(guān)信息能夠模擬用戶使用的瀏覽器。服務(wù)器通過頭文件里的用戶代理,來識(shí)別設(shè)備的系統(tǒng)和瀏覽應(yīng)用程序的信息。用戶代理可以在網(wǎng)上搜索下載,每次隨機(jī)使用一個(gè)就能不斷地改變用戶信息了。

2.6數(shù)據(jù)存儲(chǔ)

本文之所以選擇MongoDB進(jìn)行數(shù)據(jù)存儲(chǔ),是因?yàn)镸ongoDB是非關(guān)系型(NoSQL)的數(shù)據(jù)庫[6]。現(xiàn)在,每天互聯(lián)網(wǎng)上都會(huì)產(chǎn)生相當(dāng)多的數(shù)據(jù),例如微博和Twitter天天都在為他們的使用者搜集相當(dāng)巨大的數(shù)據(jù)量,用戶的個(gè)人資料、社交圈子、位置信息等等生成的數(shù)據(jù)和使用的記錄已經(jīng)成倍地增加[7]。這類信息不需要不變的形式來存儲(chǔ),無須其余操作就能夠橫向擴(kuò)充。如果我們要對(duì)這些用戶的信息進(jìn)行收集,那傳統(tǒng)的關(guān)系型數(shù)據(jù)庫已經(jīng)不適用了,而NoSQL數(shù)據(jù)庫卻能很好地管理這些龐雜的數(shù)據(jù)。

NoSQL中鍵值對(duì)(key&value)的存儲(chǔ)方式提供的數(shù)據(jù)類型非常廣泛,能夠保存多而雜的數(shù)據(jù)。因此,該數(shù)據(jù)存儲(chǔ)方法更適用于龐雜的爬蟲環(huán)境。所以本文在爬取數(shù)據(jù)時(shí),將數(shù)據(jù)保存為一個(gè)由鍵值對(duì)構(gòu)造形式組成的文件。再根據(jù)數(shù)據(jù)的類別使用.insert()方法將其存入不同的表中。鏈接單獨(dú)存儲(chǔ)在鏈接表當(dāng)中,電影和圖書的排名、名稱、評(píng)分、評(píng)價(jià)人數(shù)、年份和導(dǎo)演及作者都屬于詳細(xì)信息,則插入到信息表當(dāng)中。

3數(shù)據(jù)分析

3.1 可視化方法

當(dāng)所需的數(shù)據(jù)全部獲取完畢之后,接下來需要做的就是根據(jù)需要來將數(shù)據(jù)進(jìn)行整理并分析,這樣就能把數(shù)據(jù)中所蘊(yùn)含的信息通過圖表的方式展現(xiàn)出來了。數(shù)據(jù)可視化分析可以使用Matplotlib或者PyEcharts。Matplotlib是一個(gè)Python的繪圖庫,它以各種硬拷貝格式和跨平臺(tái)的交互式環(huán)境生成出版質(zhì)量級(jí)別的圖形。PyEcharts是一個(gè)用于生成Echarts圖表的類庫,它可以兼容當(dāng)前大多數(shù)的瀏覽應(yīng)用程序,能夠順暢地在個(gè)人電腦甚至移動(dòng)設(shè)備端,直接將數(shù)據(jù)展示在網(wǎng)頁上方便了用戶查看,極大地增強(qiáng)了用戶體驗(yàn)[8]。

本文分別采用了這兩種圖庫來生成不同的圖表,相關(guān)性分析使用的Matplotlib中的3D和2D的散點(diǎn)圖、地區(qū)及創(chuàng)作者分析則是通過PyEcharts的餅圖和詞云來呈現(xiàn)的。

3.2 相關(guān)性分析

相關(guān)性分析的含義是指分析兩個(gè)或多個(gè)滿足相關(guān)性條件的變量,以達(dá)到衡量?jī)蓚€(gè)變量要素的密切指數(shù)的目的。相關(guān)性的變量之間需要存在一定的關(guān)系或者概率才可以進(jìn)行相關(guān)性分析。Pearson相關(guān)系數(shù)(Pearson CorrelationCoefficient)是用來衡量?jī)蓚€(gè)數(shù)據(jù)集合是否在一條線上面,它用來衡量定距變量間的線性關(guān)系[9]。通常情況下通過以下取值范圍判斷變量的相關(guān)強(qiáng)度:0.8-1.0為極強(qiáng)相關(guān),0.6-0.8為強(qiáng)相關(guān),0.4-0.6為中等程度相關(guān),0.2-0.4為弱相關(guān)。

圖1? ?為豆瓣Top250電影排行榜的電影排名、評(píng)分和評(píng)價(jià)人數(shù)的散點(diǎn)圖。散點(diǎn)圖在回歸分析中通常用來觀察數(shù)據(jù)點(diǎn)在平面直角坐標(biāo)系上的分布,它可以反映出變量變化的大致趨勢(shì)。圖中X軸表示電影的排名,Y軸表示電影的評(píng)分,Z軸表示該電影的評(píng)價(jià)人數(shù)??梢钥吹诫S著排名的提升,評(píng)分和評(píng)價(jià)人數(shù)的指數(shù)也不斷升高。通過.corr()方法計(jì)算出排名和評(píng)分的相關(guān)系數(shù)為-0.71,排名和評(píng)價(jià)人數(shù)的相關(guān)系數(shù)為-0.68,說明排名和評(píng)分及評(píng)價(jià)人數(shù)都具有強(qiáng)相關(guān)性。而評(píng)分和評(píng)價(jià)人數(shù)的相關(guān)系數(shù)為0.33,說明評(píng)分和評(píng)價(jià)人數(shù)為弱相關(guān)。

圖2為豆瓣Top250電影排行榜的電影排名和上映年份的散點(diǎn)圖。圖中X軸表示電影的上映年份,Y軸表示電影的排名。發(fā)現(xiàn)數(shù)據(jù)點(diǎn)分布較為平均,且上映年份多數(shù)其中在1980年之后。計(jì)算得出年份和排名的相關(guān)系數(shù)為0.03,說明電影上映的年份與豆瓣電影Top250的排名沒有相關(guān)性。

3.3 地區(qū)分析

電影和圖書相當(dāng)于一個(gè)國(guó)家的文化產(chǎn)業(yè),將電影和圖書的上榜數(shù)量相加,可以看出各個(gè)國(guó)家地區(qū)文化產(chǎn)業(yè)的強(qiáng)弱。餅圖中美國(guó)和中國(guó)所占面積最大,說明兩國(guó)文化產(chǎn)業(yè)比較發(fā)達(dá),其余占比較多的地區(qū)通常為歐洲及日本等發(fā)達(dá)國(guó)家,根據(jù)這些國(guó)家的綜合國(guó)力來看,驗(yàn)證了經(jīng)濟(jì)是文化的基礎(chǔ)。以好萊塢為代表的美國(guó)大片,不僅推動(dòng)了當(dāng)?shù)氐奈幕a(chǎn)業(yè)發(fā)展,還向全世界輸出了美國(guó)的文化。中國(guó)大陸地區(qū)上榜的作品數(shù)量位居第二,也從側(cè)面反映出了中國(guó)文化的歷史底蘊(yùn)。地區(qū)餅圖如圖3所示。

3.4 創(chuàng)作者分析

詞云是由詞條組成的類似云型的彩色圖案,能形象地展示出排行榜里導(dǎo)演和作家作品的多少,對(duì)于出現(xiàn)頻率較高的導(dǎo)演和作家起到視覺上突出的作用。上榜作品數(shù)量越多的導(dǎo)演和作家,名字的字號(hào)就越大,使用戶一眼掃過就能領(lǐng)略當(dāng)中蘊(yùn)含的信息。詞云中上榜數(shù)量最多的創(chuàng)作者是日本作家村上春樹,牢牢地占據(jù)著中間的位置,其次還有日本著名的動(dòng)畫大師宮崎駿和《哈利波特》系列的作者J·K·羅琳。電影導(dǎo)演雖然也有上榜,但從人數(shù)和作品數(shù)量來說都遠(yuǎn)遠(yuǎn)不及文學(xué)作家多。創(chuàng)作者詞云如圖4所示。

5結(jié)束語

大數(shù)據(jù)時(shí)代,人人都是信息的創(chuàng)造者,與此同時(shí)也是信息的享用者,越來越多的企業(yè)開始去嘗試挖掘有價(jià)值的數(shù)據(jù)[10]。該系統(tǒng)根據(jù)用戶的需求處理網(wǎng)頁信息及相關(guān)的數(shù)據(jù),可以更快、更深入地檢索數(shù)據(jù),使用戶可以更有效率地搜索需要的信息。從而能為媒體、社交網(wǎng)站、出版社提供市場(chǎng)輿論導(dǎo)向服務(wù),為電影公司、娛樂公司、投資機(jī)構(gòu)提供口碑及公關(guān)等服務(wù),具有一定的應(yīng)用價(jià)值。

參考文獻(xiàn):

[1] 李嘉興,王晰巍,常穎,等.社交網(wǎng)絡(luò)用戶行為國(guó)內(nèi)外研究動(dòng)態(tài)及發(fā)展趨勢(shì)[J].現(xiàn)代情報(bào),2020,40(4):167-177.

[2] 于娟, 劉強(qiáng). 主題網(wǎng)絡(luò)爬蟲研究綜述[J]. 計(jì)算機(jī)工程與科學(xué), 2015,37(2).

[3] 蔡翹勵(lì),梁瑩,陳思煒,等.面向豆瓣網(wǎng)站的信息采集與可視化[J].電腦知識(shí)與技術(shù),2018,14(13):3-4+7.

[4] Ryan Mitchell. Python網(wǎng)絡(luò)數(shù)據(jù)采集[M]. 人民郵電出版社, 2016.

[5] 楊晶,周雙娥.一種基于XML的非結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)換方法[J]. 計(jì)算機(jī)科學(xué),2017,44(S2):414-417.

[6] 劉一夢(mèng). 基于 MongoDB的云數(shù)據(jù)管理技術(shù)的研究與應(yīng)用[D].北京交通大學(xué),2012.

[7] Yuhao, Fan. Design and Implementation of Distributed Crawler System Based on Scrapy[J]. Iop Conference, 2018.

[8] Lijuan J , Juan L , Jian W , et al. Prospect on Construction and Application of Global Maize Trade Data Visualization System Based on PyEcharts[J]. agricultural outlook, 2019.

[9] 郝德華,關(guān)維國(guó),鄒林杰,焦萌.基于Pearson相關(guān)系數(shù)的快速虛擬網(wǎng)格匹配定位算法[J].計(jì)算機(jī)應(yīng)用,2018,38(3):763-768.

[10] Liu M , Du Y , Xu X . Customer Value Analysis Based on Python Crawler[C]// 2019 Chinese Control And Decision Conference (CCDC). 2019.

【通聯(lián)編輯:王力】

猜你喜歡
網(wǎng)絡(luò)爬蟲數(shù)據(jù)采集數(shù)據(jù)分析
煉鐵廠鐵量網(wǎng)頁數(shù)據(jù)獲取系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
鐵路客流時(shí)空分布研究綜述
基于廣播模式的數(shù)據(jù)實(shí)時(shí)采集與處理系統(tǒng)
軟件工程(2016年8期)2016-10-25 15:54:18
通用Web表單數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
軟件工程(2016年8期)2016-10-25 15:52:53
Excel電子表格在財(cái)務(wù)日常工作中的應(yīng)用
淺析大數(shù)據(jù)時(shí)代背景下的市場(chǎng)營(yíng)銷策略
新常態(tài)下集團(tuán)公司內(nèi)部審計(jì)工作研究
淺析大數(shù)據(jù)時(shí)代對(duì)企業(yè)營(yíng)銷模式的影響
基于開源系統(tǒng)的綜合業(yè)務(wù)數(shù)據(jù)采集系統(tǒng)的開發(fā)研究
基于社會(huì)網(wǎng)絡(luò)分析的權(quán)威網(wǎng)頁挖掘研究
连云港市| 华蓥市| 璧山县| 临清市| 巴中市| 肇州县| 尼木县| 田林县| 瓦房店市| 门源| 监利县| 满洲里市| 宁阳县| 富宁县| 乐都县| 呼图壁县| 徐州市| 兰考县| 北海市| 江北区| 师宗县| 云林县| 陇南市| 措勤县| 同仁县| 普格县| 宁明县| 衡南县| 西乌珠穆沁旗| 大连市| 甘孜县| 铜陵市| 石渠县| 汉沽区| 射阳县| 陆河县| 麟游县| 邢台市| 二连浩特市| 新野县| 兴国县|