• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

    簡悅 汪心瀛 楊明昕

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

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

    中圖分類號:G642? ? ? ? 文獻標識碼:A

    文章編號: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ā)表自己對某些事物的想法、態(tài)度或意見[1]。用戶同時也會將自己購買的產(chǎn)品或體驗到的服務,在這些社區(qū)式的網(wǎng)站上評價,這樣通常會帶動他人也前去購買或體驗,形成口碑效應。

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

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

    2.1 發(fā)起請求

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

    2.2 地址獲取

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

    2.3 網(wǎng)頁解析

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

    2.4 元素定位

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

    2.5反爬突破

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

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

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

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

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

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

    3.1 可視化方法

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

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

    3.2 相關性分析

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

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

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

    3.3 地區(qū)分析

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

    3.4 創(chuàng)作者分析

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

    5結(jié)束語

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

    參考文獻:

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

    [2] 于娟, 劉強. 主題網(wǎng)絡爬蟲研究綜述[J]. 計算機工程與科學, 2015,37(2).

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

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

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

    [6] 劉一夢. 基于 MongoDB的云數(shù)據(jù)管理技術的研究與應用[D].北京交通大學,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] 郝德華,關維國,鄒林杰,焦萌.基于Pearson相關系數(shù)的快速虛擬網(wǎng)格匹配定位算法[J].計算機應用,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)絡爬蟲數(shù)據(jù)采集數(shù)據(jù)分析
    煉鐵廠鐵量網(wǎng)頁數(shù)據(jù)獲取系統(tǒng)的設計與實現(xiàn)
    鐵路客流時空分布研究綜述
    基于廣播模式的數(shù)據(jù)實時采集與處理系統(tǒng)
    軟件工程(2016年8期)2016-10-25 15:54:18
    通用Web表單數(shù)據(jù)采集系統(tǒng)的設計與實現(xiàn)
    軟件工程(2016年8期)2016-10-25 15:52:53
    Excel電子表格在財務日常工作中的應用
    淺析大數(shù)據(jù)時代背景下的市場營銷策略
    新常態(tài)下集團公司內(nèi)部審計工作研究
    中國市場(2016年36期)2016-10-19 04:31:23
    淺析大數(shù)據(jù)時代對企業(yè)營銷模式的影響
    基于開源系統(tǒng)的綜合業(yè)務數(shù)據(jù)采集系統(tǒng)的開發(fā)研究
    基于社會網(wǎng)絡分析的權威網(wǎng)頁挖掘研究
    亚东县| 垫江县| 谢通门县| 乐昌市| 太仓市| 惠东县| 木兰县| 蒲城县| 平南县| 鄂尔多斯市| 股票| 英山县| 景宁| 兴仁县| 绥化市| 东兰县| 阿荣旗| 乳山市| 朝阳县| 潢川县| 天台县| 太湖县| 仁寿县| 天镇县| 长泰县| 洪江市| 普安县| 繁峙县| 无锡市| 新安县| 韶山市| 华亭县| 迭部县| 琼结县| 洱源县| 马山县| 利川市| 泉州市| 绥棱县| 惠安县| 莱芜市|