• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于python的豆瓣電影數(shù)據(jù)采集與分析可視化

      2021-09-17 04:53:54張荑陽(yáng)毛紅霞
      電子制作 2021年16期
      關(guān)鍵詞:爬蟲(chóng)詞頻云圖

      張荑陽(yáng),毛紅霞

      (四川大學(xué)錦城學(xué)院,四川成都,611731)

      0 引言

      網(wǎng)絡(luò)爬蟲(chóng),又被稱為網(wǎng)頁(yè)蜘蛛或者網(wǎng)絡(luò)機(jī)器人,是指按照某種規(guī)則從網(wǎng)絡(luò)上自動(dòng)爬取用戶所需內(nèi)容的腳本程序。[1]本文借助爬蟲(chóng)技術(shù)探究目前國(guó)內(nèi)影視業(yè)存在的一種“爛片高票房”的現(xiàn)象,以《小時(shí)代系列》電影為例,旨在了解這部電影有哪些元素吸引了觀眾,以及觀眾對(duì)這部電影的評(píng)論看法,進(jìn)而分析大眾對(duì)此類影片的態(tài)度。

      實(shí)現(xiàn)電影短評(píng)數(shù)據(jù)采集后進(jìn)行數(shù)據(jù)清洗和預(yù)處理,可視化部分運(yùn)用WordCloud詞云庫(kù)結(jié)合matplotlib庫(kù)繪制詞云圖、餅圖和條形圖。利用餅圖來(lái)分析評(píng)分等級(jí),繁冗的文字?jǐn)?shù)據(jù)就被圖形替代,能更直觀看到大眾對(duì)電影的評(píng)分等級(jí)分布[1]。使用詞云圖分析,能在頻數(shù)統(tǒng)計(jì)的基礎(chǔ)上,更加美觀地展示數(shù)據(jù),對(duì)于重點(diǎn)詞語(yǔ)有更重點(diǎn)的突出展示。

      1 爬蟲(chóng)算法設(shè)計(jì)

      ■1.1 相關(guān)技術(shù)

      (1)Xpath庫(kù),本文解析網(wǎng)頁(yè)的主要辦法,通過(guò)request庫(kù)獲取網(wǎng)頁(yè)數(shù)據(jù)后,利用Xpath解析四部電影的節(jié)點(diǎn)和劇名。它提供了十分簡(jiǎn)潔明了的路徑選擇表達(dá)式,基本所有定位的節(jié)點(diǎn)可用通過(guò)Xpath來(lái)選擇。

      (2)selenium庫(kù),Selenium WebDriver是開(kāi)源API的集合,可以用于自動(dòng)測(cè)試Web應(yīng)用程序,并可以在大多數(shù)Web瀏覽器上運(yùn)行,在爬蟲(chóng)中也有著很好的應(yīng)用[2]。本文通過(guò)selenium自動(dòng)化模擬登陸操作,與豆瓣網(wǎng)站建立聯(lián)系。

      (3)multiprocessing.dummy庫(kù),導(dǎo)入Pool模塊,以相同API實(shí)現(xiàn)多線程爬取四部電影的熱門(mén)短評(píng),借助Pool.map()實(shí)現(xiàn)線程順序執(zhí)行,提高了算法的運(yùn)行效率。

      (4)wordcloud庫(kù),一款展示詞云圖的第三方庫(kù),以詞語(yǔ)為基本單位,當(dāng)某一個(gè)詞語(yǔ)的詞頻越高時(shí),展示在詞云圖中的該詞語(yǔ)顯示越大。

      (5)jieba庫(kù),一款用來(lái)實(shí)現(xiàn)分詞的第三方庫(kù),其語(yǔ)料基于人民日?qǐng)?bào),冗余度較低,返回中文文本分詞后的列表變量,支持三種分詞模式:精確模式,全模式,搜索引擎模式。本文主要使用lcut()精確分詞模式并導(dǎo)入自定義文檔來(lái)對(duì)短評(píng)內(nèi)容做中文文本分析。

      (6)matplotlib.pyplot庫(kù),pyplot 子模塊提供 bar()函數(shù)和pie()函數(shù)分別繪制條形圖和餅圖,還提供show()函數(shù)顯示正在處理的當(dāng)前圖形。

      ■1.2 應(yīng)對(duì)反爬蟲(chóng)策略

      (1)使用代理IP,豆瓣網(wǎng)站在爬蟲(chóng)程序頻繁發(fā)起請(qǐng)求后會(huì)采取封號(hào)策略,除了更換WiFi網(wǎng)絡(luò),還可以使用代理IP,給request.get()方法內(nèi)添加proxies參數(shù)。

      (2)selenium模擬登陸,完成登陸操作后借助request.Session()記錄登陸狀態(tài)。

      (3)使用time庫(kù)中的sleep函數(shù),進(jìn)行強(qiáng)制休眠,在selenium登入時(shí)模擬用戶的點(diǎn)擊延時(shí)行為。經(jīng)多次測(cè)試,該方法可以有效地應(yīng)對(duì)豆瓣網(wǎng)站的反爬蟲(chóng)策略。

      (4)偽裝User-Agent,User agent是HTTP協(xié)議的中的一個(gè)字段,其作用是描述發(fā)出HTTP請(qǐng)求的終端的一些信息,通過(guò)編寫(xiě)請(qǐng)求頭headers,寫(xiě)入瀏覽器UA,設(shè)置操作系統(tǒng)為“Windows NT 6.1;Win64;x64”,向豆瓣網(wǎng)站發(fā)送帶headers參數(shù)的GET請(qǐng)求。

      ■1.3 selenium庫(kù)模擬瀏覽器操作登陸

      依托于聚焦網(wǎng)絡(luò)爬蟲(chóng)技術(shù),對(duì)網(wǎng)頁(yè)的數(shù)據(jù)內(nèi)容進(jìn)行抓取與分析,可以快速過(guò)濾掉與主題無(wú)關(guān)的URL地址[3]。利用聚焦網(wǎng)絡(luò)爬蟲(chóng)技術(shù),通過(guò)獲取初始URL,依據(jù)搜索策略來(lái)確定下一步爬取所需的URL,過(guò)濾與爬取目標(biāo)無(wú)關(guān)的鏈接,需要將已爬取的URL地址存入到一個(gè)URL列表中,用以判定爬取的進(jìn)程和避免重復(fù)爬取。具體實(shí)現(xiàn)通過(guò)按鍵f12打開(kāi)Chrome開(kāi)發(fā)者工具審查元素,找到需要定位的元素,右鍵復(fù)制xpath路徑。登陸界面網(wǎng)址的獲取則需要通過(guò)網(wǎng)絡(luò)面板(Network)記錄的操作信息進(jìn)行提取。

      在已安裝Chromedriver.exe的前提下使用Selenium庫(kù)完全模擬瀏覽器的操作,模擬用戶登陸、點(diǎn)擊、下拉、切換窗口等一系列操作,此處導(dǎo)入time包采用休眠的方式強(qiáng)制等待,首先獲取登入界面的url“https://accounts.douban.com/passport/login”通過(guò)Xpath方式定位賬號(hào)密碼方式登陸選項(xiàng),使用click()方法點(diǎn)擊選擇,再進(jìn)行對(duì)賬號(hào)框和密碼框以及提交信息按鈕的元素定位,使用send_keys()方法傳入賬號(hào)和密碼,點(diǎn)擊觸發(fā)登陸成功事件。在未登錄豆瓣賬號(hào)的情況下,翻頁(yè)行為上限為10次,每頁(yè)20條評(píng)論,爬取結(jié)果限制在200條,而登陸狀態(tài)下翻頁(yè)則不受到限制。

      ■1.4 Xpath解析網(wǎng)頁(yè)

      通過(guò)分析電影短評(píng)界面的URL變化,掌握翻頁(yè)規(guī)律,在進(jìn)行翻頁(yè)操作時(shí),網(wǎng)頁(yè)URL更改的部分是從“?”到“#”之間的參數(shù)部分,參數(shù)間以“&”作為分隔符,為爬取影評(píng)所需的搜索部分、查詢部分。

      短評(píng)第一頁(yè)URL參數(shù)部分:start=20&limit=20&statu s=P&sort=new_score

      短評(píng)第二頁(yè)URL參數(shù)部分:start=40&limit=20&statu s=P&sort=new_score

      每一次翻頁(yè)操作后,start增加20,每頁(yè)僅顯示20條短評(píng),在代碼中以format格式化函數(shù)實(shí)現(xiàn):'start={}&limi t=20&status=P&sort=new_score'.format(page*20)

      使用xpath中的@href和text()表達(dá)式分別定位四部電影節(jié)點(diǎn)下的對(duì)應(yīng)鏈接和電影劇名,存為字典類型,創(chuàng)建4個(gè)線程順序爬取4步電影的短評(píng)內(nèi)容。

      ■1.5 文本數(shù)據(jù)清洗和數(shù)據(jù)預(yù)處理

      篩選電影短評(píng)中的“熱門(mén)”標(biāo)簽,以分析URL變化規(guī)律的方式順序采集數(shù)據(jù),爬取到的目標(biāo)短評(píng)數(shù)據(jù)一共2000行,4列,列名分別為code、host、grade、content。第一列“code”是對(duì)每一行數(shù)據(jù)進(jìn)行編號(hào),為int類型,第二列“host”是短評(píng)人的用戶名,第三列“grade”是電影的評(píng)分等級(jí),其評(píng)分等級(jí)只有六種數(shù)據(jù):很差、較差、還行、推薦、力薦和NULL,第四列“content”是短評(píng)內(nèi)容,為文本數(shù)據(jù)。

      數(shù)據(jù)清洗,從概念上講是基于目標(biāo)數(shù)據(jù),通過(guò)采用不同的數(shù)據(jù)檢測(cè)、審查、處理、校驗(yàn)方法,實(shí)現(xiàn)數(shù)據(jù)糾錯(cuò),清除原數(shù)據(jù)中“臟”的信息,如一些統(tǒng)計(jì)調(diào)查中的無(wú)效值、缺失值、重復(fù)數(shù)據(jù)、異常數(shù)據(jù)等。[4]其中評(píng)分等級(jí)和短評(píng)內(nèi)容是本文可視化分析的基本數(shù)據(jù),需要進(jìn)行文本數(shù)據(jù)清洗,去除空值等無(wú)效評(píng)論。使用codecs模塊指定以u(píng)tf-8編碼方式打開(kāi)短評(píng)文件,使用codecs.open()方法讀取文件內(nèi)容時(shí)候,會(huì)自動(dòng)轉(zhuǎn)換為內(nèi)部的unicode,一般情況下不會(huì)出現(xiàn)編碼轉(zhuǎn)換失敗讀取錯(cuò)誤的問(wèn)題[2]。

      為了更精準(zhǔn)地展示詞云圖和直方圖,另創(chuàng)自定義文檔,內(nèi)容是電影特定名詞例如“郭敬明、楊冪、陳學(xué)冬”等電影人物名字,使用jieba.load_userdict()加載自定義文檔,利用jieba庫(kù)lcut()來(lái)實(shí)現(xiàn)對(duì)句子的最高精度劃分,從分詞結(jié)果中剔除例如“我們”,“你們”,“因?yàn)椤?,“所以”,“這個(gè)”,“那個(gè)”等代詞、冠詞、連詞這類語(yǔ)法型詞匯,再借助collections模塊Counter()方法實(shí)現(xiàn)詞頻及常用詞頻度統(tǒng)計(jì),詞頻統(tǒng)計(jì)結(jié)果存為txt文檔,便于可視化模塊使用。

      2 爬取結(jié)果可視化

      ■2.1 詞云圖繪制

      使用wordcloud庫(kù)和imageio融合圖形圖片繪制詞頻統(tǒng)計(jì)詞云圖,以劇中四位主角剪影做為背景圖形繪制詞云圖,來(lái)展示觀影者對(duì)四部電影的評(píng)價(jià),首先導(dǎo)入詞云背景圖,設(shè)置詞云圖能顯示的最大顯示單詞數(shù)為1000,指定顯示字體,設(shè)置畫(huà)布大小,關(guān)閉橫縱坐標(biāo)顯示,保存為PNG格式的圖片文件。詞云圖繪制結(jié)果如圖1所示。

      圖1 電影短評(píng)詞云圖

      ■2.2 餅圖繪制

      餅圖的繪制主要使用到了matplotlib中的基礎(chǔ)繪圖pie()方法,按照列表名索引方式提取短評(píng)數(shù)據(jù)中的評(píng)分等級(jí)列,使用列表生成式對(duì)評(píng)分等級(jí)列中非空值的出現(xiàn)次數(shù)進(jìn)行計(jì)數(shù)統(tǒng)計(jì):list=[grade.value_counts()[i] for i in range(5)]并存為列表變量。傳入統(tǒng)計(jì)數(shù)據(jù)值和統(tǒng)計(jì)數(shù)據(jù)標(biāo)簽,pie()方法中傳入?yún)?shù)autopct="%1.2f%%"自動(dòng)計(jì)算百分比,設(shè)置shadow=True陰影顯示和explode突出顯示比重最大的評(píng)分等級(jí)來(lái)實(shí)現(xiàn)圖像優(yōu)化,添加標(biāo)簽值,保存餅圖為PNG格式的圖片文件。餅圖繪制結(jié)果如圖2所示。

      圖2 電影評(píng)分等級(jí)餅圖

      ■2.3 條形圖繪制

      根據(jù)詞頻統(tǒng)計(jì)結(jié)果以繪制條形圖的模式[3],得到更清晰、明了的詞頻統(tǒng)計(jì)結(jié)果。使用matplotlib的子模塊pyplot中的bar()方法繪制條形圖,首先設(shè)置圖標(biāo)跨行跨列,以split()方法以空格作為分隔符切割詞語(yǔ)與頻數(shù),分別存入已定義的列表中。再以切片的方式提取詞頻統(tǒng)計(jì)結(jié)果前20項(xiàng)詞語(yǔ),顯示透明度設(shè)置為0.8,設(shè)置標(biāo)題和坐標(biāo)軸名稱字體大小,同樣保存為PNG格式的圖片文件。詞頻條形圖繪制結(jié)果如圖3所示。

      圖3 詞頻條形圖

      ■2.4 可視化結(jié)果分析

      系列電影《小時(shí)代》是由郭敬明執(zhí)導(dǎo),楊冪、柯震東、郭采潔、郭碧婷等領(lǐng)銜主演的青春時(shí)尚都市電影。同時(shí)該電影也是導(dǎo)演郭敬明同名小說(shuō)的改編作品,小說(shuō)讀者基數(shù)大,有部分小說(shuō)閱讀者同時(shí)也是電影觀影者。前20項(xiàng)高頻詞語(yǔ)中,郭敬明、顧里、楊冪和四娘這類人名詞語(yǔ)出現(xiàn)次數(shù)較多。觀影評(píng)分很差和較差比重最大,其次是推薦和力薦。

      根據(jù)餅圖展示結(jié)果,大部分觀影者對(duì)于該系列電影的評(píng)價(jià)偏向負(fù)面,近半觀影者給出最低評(píng)價(jià)“很差”,電影整體評(píng)分較低。由詞云圖結(jié)果和條形圖結(jié)果顯示,電影的明星效應(yīng)和改編自知名小說(shuō)這兩個(gè)特性對(duì)大眾有一定吸引力,觀影者對(duì)于電影選角、演員演技和電影劇情有偏好和選擇,系列電影《小時(shí)代》的劇情不能滿足部分觀影者的需求。

      3 結(jié)語(yǔ)

      本文基于豆瓣網(wǎng)站《小時(shí)代系列》電影短評(píng),利用python中的selenium庫(kù)實(shí)現(xiàn)了模擬登陸、Xpath模塊解析網(wǎng)頁(yè)、request庫(kù)構(gòu)造請(qǐng)求、jieba庫(kù)分詞等爬蟲(chóng)技術(shù)。介紹了算法的具體設(shè)計(jì)流程,詳細(xì)描述了數(shù)據(jù)可視化部分,并展示結(jié)果。使用了多線程對(duì)爬取需要翻頁(yè)的短評(píng)內(nèi)容進(jìn)行運(yùn)行速度的提升。本次對(duì)豆瓣網(wǎng)站系列電影《小時(shí)代》的爬取實(shí)現(xiàn),證明了網(wǎng)絡(luò)規(guī)則越來(lái)越規(guī)范,便利了爬蟲(chóng)獲取數(shù)據(jù),爬蟲(chóng)可以簡(jiǎn)單快速地實(shí)現(xiàn)多種任務(wù),它擁有更加廣闊的應(yīng)用前景[4]。若目標(biāo)是更全面地分析大眾對(duì)該類影片的看法,可根據(jù)本文使用的爬蟲(chóng)方法擴(kuò)大爬取廣度,采集同類標(biāo)簽影片的評(píng)論數(shù)據(jù)和評(píng)分?jǐn)?shù)據(jù),以及加深爬取深度,分析受眾人群特征,實(shí)現(xiàn)更全面的分析。

      猜你喜歡
      爬蟲(chóng)詞頻云圖
      利用網(wǎng)絡(luò)爬蟲(chóng)技術(shù)驗(yàn)證房地產(chǎn)灰犀牛之說(shuō)
      基于詞頻分析法的社區(qū)公園歸屬感營(yíng)建要素研究
      園林科技(2021年3期)2022-01-19 03:17:48
      基于Python的網(wǎng)絡(luò)爬蟲(chóng)和反爬蟲(chóng)技術(shù)研究
      成都云圖控股股份有限公司
      利用爬蟲(chóng)技術(shù)的Geo-Gnutel la VANET流量采集
      黃強(qiáng)先生作品《雨后松云圖》
      名家名作(2017年3期)2017-09-15 11:13:37
      大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲(chóng)技術(shù)
      電子制作(2017年9期)2017-04-17 03:00:46
      基于TV-L1分解的紅外云圖超分辨率算法
      詞頻,一部隱秘的歷史
      云圖青石板
      化州市| 汨罗市| 清水县| 开封市| 汤阴县| 方山县| 莱州市| 灵山县| 盘山县| 雅江县| 岳普湖县| 芦溪县| 察雅县| 满洲里市| 高唐县| 江孜县| 上饶县| 东方市| 应用必备| 鄂托克前旗| 柘城县| 万源市| 玉树县| 孟连| 巴彦淖尔市| 长顺县| 甘肃省| 敦煌市| 湾仔区| 丰原市| 温宿县| 昭苏县| 改则县| 文昌市| 本溪市| 静海县| 马公市| 榆中县| 绥棱县| 班戈县| 利辛县|