亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Python的豆瓣影視短評(píng)的數(shù)據(jù)采集與分析

        2020-06-28 00:54:31高雨菲毛紅霞
        現(xiàn)代信息科技 2020年24期
        關(guān)鍵詞:數(shù)據(jù)采集

        高雨菲 毛紅霞

        摘? 要:豆瓣是一個(gè)通過(guò)提供書籍影視相關(guān)內(nèi)容發(fā)展起來(lái)的網(wǎng)站,能夠提供電影的各類信息。豆瓣用戶的評(píng)論有時(shí)能引領(lǐng)一代新的風(fēng)尚潮流。文章使用Python語(yǔ)言結(jié)合有關(guān)爬蟲的知識(shí)設(shè)計(jì)了有關(guān)豆瓣影視短評(píng)的爬取系統(tǒng),采用了URL管理器、網(wǎng)頁(yè)結(jié)構(gòu)分析、數(shù)據(jù)采集、數(shù)據(jù)清洗、數(shù)據(jù)分析、數(shù)據(jù)可視化等模塊,將指定的電影影評(píng)內(nèi)容保存,精準(zhǔn)的獲取不同電影的被喜愛程度以及電影上映后帶來(lái)的反響。

        關(guān)鍵詞:Python;數(shù)據(jù)采集;數(shù)據(jù)清洗;數(shù)據(jù)可視化

        中圖分類號(hào):TP391.1? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2020)24-0010-04

        Data Collection and Analysis of Douban Film and Television Short Commentary Based on Python

        GAO Yufei,MAO Hongxia

        (School of Computer and Software,Jincheng College of Sichuan University,Chengdu? 611731,China)

        Abstract:Douban is website that is gradually developed through providing books,film and television related content,it can provide different kinds of information about film. Sometimes,Douban userscomments can lead a generation of new fashion trend. In this paper,using Python language and combining with the knowledge on crawlers to design a crawling system about Douban film and television short commentary,which adopts the following modules such as URL manager,webpage structure analysis,data collection,data cleaning,data analysis and data visualization etc to save the specified film review content,so as to accurately obtain the popularity extent of the different films and response produced after the filmsshowing.

        Keywords:Python;data collection;data cleaning;data visualization

        0? 引? 言

        隨著互聯(lián)網(wǎng)時(shí)代的到來(lái),網(wǎng)絡(luò)上的數(shù)據(jù)量持續(xù)高速增長(zhǎng),已經(jīng)呈現(xiàn)出數(shù)以千萬(wàn)計(jì)的數(shù)據(jù)大爆發(fā)。面對(duì)著這樣龐大的數(shù)據(jù)僅僅使用人工來(lái)篩選有價(jià)值的數(shù)據(jù)是不現(xiàn)實(shí)的。通過(guò)Python編寫程序來(lái)自動(dòng)獲取信息的網(wǎng)絡(luò)爬蟲應(yīng)運(yùn)而生。在當(dāng)下,娛樂(lè)行業(yè)蓬勃發(fā)展,電影作為其中的主力之一,有著龐大的受眾,大量的豆瓣用戶在豆瓣網(wǎng)站上留下了他們對(duì)于不同電影的評(píng)論。本文采用Python作為編程語(yǔ)言,爬取當(dāng)下熱門電影的影評(píng),并對(duì)于爬取的數(shù)據(jù)內(nèi)容進(jìn)行了一系列的清洗與整理,將有價(jià)值的數(shù)據(jù)進(jìn)行了分析并通過(guò)可視化技術(shù)展現(xiàn)出來(lái)。

        1? 爬蟲原理

        網(wǎng)絡(luò)爬蟲是通過(guò)獲取的不同的URL作為核心的支撐,來(lái)尋找和抓取在URL之下的各種文章,鏈接和圖片等內(nèi)容。在給定的URL中,網(wǎng)絡(luò)爬蟲會(huì)不斷地從中抽取URL,然后對(duì)當(dāng)下URL的內(nèi)容進(jìn)行篩選和獲取,當(dāng)一個(gè)URL從頭到尾都查找完了之后,網(wǎng)絡(luò)爬蟲會(huì)自動(dòng)地進(jìn)入到下一個(gè)URL中,重復(fù)之前的步驟,直到所有的URL都被查找了一次。轉(zhuǎn)到技術(shù)層面來(lái)說(shuō),是通過(guò)程序模擬瀏覽器請(qǐng)求站點(diǎn)的行為,把站點(diǎn)返回的數(shù)據(jù)(HTML代碼/JSON數(shù)據(jù)/二進(jìn)制數(shù)據(jù))存放在本地,等待后期使用。根據(jù)不同需要有目的地進(jìn)行爬取,要增加目標(biāo)的定義和過(guò)濾機(jī)制。本文采用簡(jiǎn)單的框架結(jié)構(gòu)來(lái)編寫爬蟲程序,分別有以下四個(gè)模塊:URL管理器、網(wǎng)頁(yè)下載器、網(wǎng)頁(yè)解析器、網(wǎng)頁(yè)輸出器,這四個(gè)模塊共同完成抓取網(wǎng)頁(yè)的整個(gè)過(guò)程[1]。

        2? 影評(píng)爬取數(shù)據(jù)系統(tǒng)設(shè)計(jì)

        2.1? 網(wǎng)頁(yè)URL分析

        首先通過(guò)對(duì)于本文要獲取的豆瓣的電影的網(wǎng)頁(yè)影評(píng)界面進(jìn)行分析,觀察需要的URL地址??梢园l(fā)現(xiàn),豆瓣的每一部電影在subject/之后的數(shù)字則對(duì)應(yīng)了每一部固定的電影。如圖1所示,在start=與limit=20之間的數(shù)值都是以每頁(yè)20的速度遞增的,可以通過(guò)改變程序中有關(guān)于抓取網(wǎng)頁(yè)URL時(shí)候的數(shù)值的改變來(lái)進(jìn)行程序的簡(jiǎn)單模擬翻頁(yè)。解析網(wǎng)頁(yè)URL的代碼為:

        for i in range(n):

        url='https://movie.douban.com/subject/26754233/comments?start={&limit=20&status=P&sort=new_score'url = url.format(i*20)

        2.2? 網(wǎng)頁(yè)內(nèi)容解析

        對(duì)于頁(yè)面解析不同的使用者在不同的網(wǎng)站上使用的解析方法都不一樣,主要的解析方式有正則表達(dá)式,其次是解析庫(kù),常用的有兩個(gè)解析庫(kù)有l(wèi)xml和BeautifulSoup。通過(guò)確定每個(gè)數(shù)據(jù)對(duì)應(yīng)的元素及Class名稱后,使用find,find_all,select等方法進(jìn)行標(biāo)簽的定位,進(jìn)行數(shù)據(jù)提取[2]。通過(guò)Chrome瀏覽器的開發(fā)者工具,可以看到如圖2所示的源代碼。通過(guò)源代碼可以找到影評(píng)中的評(píng)論者信息,評(píng)論者主頁(yè)網(wǎng)址,影評(píng)評(píng)論的內(nèi)容,具體評(píng)論的時(shí)間,以及評(píng)論者對(duì)于這部電影的喜好程度等級(jí)。

        同樣的方式打開用戶的主頁(yè),如圖3所示,可以找到在主頁(yè)的右上方有一份關(guān)于用戶的個(gè)人信息的簡(jiǎn)單補(bǔ)充。

        2.3? 反爬蟲措施的應(yīng)對(duì)

        針對(duì)爬蟲,很多網(wǎng)站都有了反爬蟲手段,而建立網(wǎng)絡(luò)爬蟲的第一原則是:所有信息都是偽造的[3]。本文主要采用了四種方式來(lái)應(yīng)對(duì)反爬蟲措施:

        (1)使用Cookies。豆瓣網(wǎng)站上,每一個(gè)注冊(cè)了豆瓣賬號(hào)的用戶都有一個(gè)獨(dú)一無(wú)二的Cookies。Cookies是辨別用戶身份的重要途徑??梢酝ㄟ^(guò)Session跟蹤而儲(chǔ)存用戶在網(wǎng)頁(yè)登錄時(shí)候的Cookies來(lái)進(jìn)行模擬用戶登錄訪問(wèn)網(wǎng)頁(yè),來(lái)獲取只有登錄之后才能被查找到的內(nèi)容。

        (2)使用用戶的代理信息。通過(guò)F12,找到Headers,主要關(guān)注用戶代理User-Agent字段。User-Agent代表用戶是使用什么設(shè)備來(lái)訪問(wèn)網(wǎng)站的。不同瀏覽器的User-Agent值是不同的。通過(guò)在Headers中添加User-Agent就可以在爬蟲程序中,將其偽裝成不同的設(shè)備訪問(wèn)瀏覽器信息。

        (3)設(shè)置延時(shí)訪問(wèn)。在使用程序訪問(wèn)網(wǎng)頁(yè)的時(shí)候往往在一秒鐘內(nèi)可以訪問(wèn)幾百上千次,而在現(xiàn)實(shí)生活中,用戶是無(wú)法在一秒鐘內(nèi)達(dá)到這樣一個(gè)訪問(wèn)速度的。這樣爬蟲的程序就很容易被網(wǎng)站監(jiān)測(cè)出來(lái)。因此,可以使用sleep()來(lái)降低爬蟲在一段時(shí)間之內(nèi)的爬取速度,由此來(lái)模擬用戶行為。

        (4)建立用戶代理池來(lái)達(dá)到隨機(jī)爬取的目的。在爬取過(guò)程中,一直用同樣一個(gè)地址爬取是不可取的。如果每一次訪問(wèn)都是不同的用戶,對(duì)方就很難進(jìn)行反爬,那么用戶代理池就是一種很好的反爬攻克的手段。首先需要收集大量的用戶代理User-Agent,對(duì)于收集到的用戶代理信息建立函數(shù)UA(),用于切換用戶代理User-Agent。最后利用上面所提到的用戶代理池進(jìn)行爬取,使用Python中的隨機(jī)函數(shù)random()來(lái)隨機(jī)獲取用戶代理信息,來(lái)使用不同的用戶來(lái)訪問(wèn)網(wǎng)頁(yè)信息。

        2.4? 網(wǎng)頁(yè)內(nèi)容的獲取與保存

        首先要獲取有需求的網(wǎng)頁(yè)內(nèi)容信息??梢允褂枚嗑€程的網(wǎng)絡(luò)爬蟲來(lái)提高獲取內(nèi)容的速度。對(duì)于指定需要獲取內(nèi)容的獲取代碼為:

        def query(get_url):

        #函數(shù)功能獲取內(nèi)容并存入對(duì)應(yīng)的文件

        rqg = requests.get(get_url, headers=headers)

        rqg.encoding = chardet.detect(rqg.content)['encoding'l

        html=rqg.content.decode(utf-8", "ignore")

        html = etree.HTML(html, parser=etree.HTMLParser (encoding='utf-8'))search = html.xpath('//*[@id="profile"]/div/div[2]/div[1]/div/a/text()")

        path='C:/Users/hby/PycharmProjects/pythonProject1/地址.txt'

        f = open(path, mode=w", encoding='utf-8)

        f.writelines(search)

        f.close()

        將從網(wǎng)頁(yè)之中爬取下來(lái)的數(shù)據(jù)轉(zhuǎn)化為本地的csv文件或者是txt文本??梢缘玫饺鐖D4所示的幾個(gè)類別信息,分別為評(píng)論者、時(shí)間、評(píng)分、內(nèi)容和主頁(yè)地址。通過(guò)對(duì)主頁(yè)內(nèi)容的抓取可以獲得大量的參與評(píng)論的用戶的常居住的文本信息。保存為本地文件的代碼為:

        #to_csv導(dǎo)出為.csv文件; to_excel導(dǎo)出為.xls或.xlsx文件

        df.to_excel(r'C:/Users/hby/PycharmProjects/pythonProject1/0.xls'.format(name),index=False)

        print('導(dǎo)出完成?。?/p>

        def write_txt(file_name,wirte_name):

        df = pd.read_excel(file_name, header=None)

        #使用pandas模塊讀取數(shù)據(jù)

        print('開始寫入txt文件...")

        df1=df[3]

        df1.to_csv(wirte_name, header=None,sep=",", index=False)

        #寫入,逗號(hào)分隔

        print('文件寫入成功!'")

        3? 數(shù)據(jù)分析系統(tǒng)設(shè)計(jì)

        3.1? 數(shù)據(jù)清洗

        檢測(cè)數(shù)據(jù)中存在冗余、錯(cuò)誤、不一致等噪聲數(shù)據(jù),利用各種清洗技術(shù),形成“干凈”的一致性數(shù)據(jù)集合,而數(shù)據(jù)清洗技術(shù)包括清除重復(fù)數(shù)據(jù)、填充缺失數(shù)據(jù)、消除噪聲數(shù)據(jù)等[4]。常用數(shù)據(jù)清洗函數(shù):排序,搜索np.sort函數(shù);從小到大進(jìn)行排序np.argsort函數(shù);返回的是數(shù)據(jù)中從小到大的索引值np.where;可以自定義返回滿足條件的情況np.extract;返回滿足條件的元素值。

        Pandas常用數(shù)據(jù)結(jié)構(gòu)Series和方法通過(guò)pandas.Series來(lái)創(chuàng)建Series數(shù)據(jù)結(jié)構(gòu)。pandas.Series(data,index,dtype,name)。上述參數(shù)中,data可以為列表,array或者dict。上述參數(shù)中,index表示索引,必須與數(shù)據(jù)同長(zhǎng)度,name代表對(duì)象的名稱Pandas常用數(shù)據(jù)結(jié)構(gòu)dataframe和方法通過(guò)pandas.DataFrame來(lái)創(chuàng)建DataFrame數(shù)據(jù)結(jié)構(gòu)。pandas.DataFrame (data,index,dtype,columns)。上述參數(shù)中,data可以為列表,array或者dict。上述參數(shù)中,index表示行索引,columns代表列名或者列標(biāo)簽。對(duì)于一些空值的位置可以適當(dāng)?shù)闹苯觿h除當(dāng)前位置。部分具體清洗數(shù)據(jù)代碼為:

        def cleanout(path_file1):

        result =[]

        with open(path_file1, 'r', encoding='utf-8') as f:for line in f:

        result.append(line.strip(r'\n').split('\n')[O])

        df = pd.DataFrame(result)

        drop=df.replace('[]',np.nan)

        data=drop.dropna(how='all')list= data.values.tolist()

        counts = dict(zip(*np.unique(list, return_counts=True)))

        3.2? 數(shù)據(jù)可視化

        數(shù)據(jù)可視化是數(shù)據(jù)科學(xué)領(lǐng)域中的一種技術(shù),它使復(fù)雜的數(shù)據(jù)看起來(lái)簡(jiǎn)單易懂。詞云圖,也稱為文字云,是用圖像的方式對(duì)文本中頻繁出現(xiàn)的詞語(yǔ)進(jìn)行展現(xiàn),形成“關(guān)鍵詞渲染”或者“關(guān)鍵詞云層”的效果[5]。如圖5所示,通過(guò)詞云的刪減可以直觀地看到電影的主要文本內(nèi)容和一些突出的要素。可以借助Python的第三方庫(kù),如jieba庫(kù)來(lái)獲取有關(guān)于影評(píng)內(nèi)容的中文分詞,對(duì)于分詞后的內(nèi)容有著大量的無(wú)實(shí)際意義的詞語(yǔ)。也可導(dǎo)入自行增加刪減的stopwords來(lái)進(jìn)行無(wú)實(shí)際意義的詞語(yǔ)的刪減,達(dá)到想要的實(shí)際效果。某一特定文件內(nèi)的高詞語(yǔ)頻率,以及該詞語(yǔ)在整個(gè)文件集合中的低文件頻率,可以產(chǎn)生出高權(quán)重的TF-IDF[6]。

        通過(guò)對(duì)于用戶的常居住地的處理和清洗之后,為了能夠更好、更直觀的呈現(xiàn)不同地區(qū)的差異,借助Python中的Basemap庫(kù),可以獲取到中國(guó)各省份的區(qū)分圖,如圖6所示,能夠發(fā)現(xiàn)不同地區(qū)的人對(duì)電影的討論熱度的差異。

        4? 結(jié)? 論

        通過(guò)Chrome的開發(fā)者查看源代碼我們可以直觀的看到不同的內(nèi)容在網(wǎng)頁(yè)上的位置,而利用Python編寫的程序可以幫助我們解析URL網(wǎng)頁(yè)。在網(wǎng)頁(yè)上獲取到所需要的內(nèi)容,保存到本地。針對(duì)爬取到的數(shù)據(jù)存在著格式不規(guī)范,內(nèi)容有空缺,數(shù)據(jù)出錯(cuò)等情況,需要在使用之前進(jìn)行數(shù)據(jù)的清洗與整理。對(duì)數(shù)據(jù)運(yùn)用不同的分析方法,最后借助圖表的方式來(lái)清晰直觀的展現(xiàn)出所要呈現(xiàn)的結(jié)果,由結(jié)果可以看出觀眾對(duì)于本文電影的感受是受到了非常大的歷史震撼的,而北京和上海的用戶對(duì)于本文電影的內(nèi)容在豆瓣網(wǎng)上的評(píng)論較多。

        參考文獻(xiàn):

        [1] 孫冰.基于Python的多線程網(wǎng)絡(luò)爬蟲的設(shè)計(jì)與實(shí)現(xiàn) [J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2018(4):38-39.

        [2] 成文瑩,李秀敏.基于Python的電影數(shù)據(jù)爬取與數(shù)據(jù)可視化分析研究 [J].電腦知識(shí)與技術(shù),2019,15(31):8-10+12.

        [3] XIE D X,XIA W F. Design and implementation of the topic-focused crawler based on scrappy [J].Advanced Materials Research,2014(850-851):487-490.

        [4] 孔欽,葉長(zhǎng)青,孫赟.大數(shù)據(jù)下數(shù)據(jù)預(yù)處理方法研究 [J].計(jì)算機(jī)技術(shù)與發(fā)展,2018,28(5):1-4.

        [5] 祝永志,荊靜.基于Python語(yǔ)言的中文分詞技術(shù)的研究 [J].通信技術(shù),2019,52(7):1612-1619.

        [6] 涂小琴.基于Python爬蟲的電影評(píng)論情感傾向性分析 [J].現(xiàn)代計(jì)算機(jī)(專業(yè)版),2017(35):52-55.

        作者簡(jiǎn)介:高雨菲(1999.07—),女,漢族,四川內(nèi)江人,本科在讀,研究方向:數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)。

        猜你喜歡
        數(shù)據(jù)采集
        CS5463在植栽用電子鎮(zhèn)流器老化監(jiān)控系統(tǒng)中的應(yīng)用
        大數(shù)據(jù)時(shí)代高校數(shù)據(jù)管理的思考
        科技視界(2016年18期)2016-11-03 22:51:40
        鐵路客流時(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
        基于開源系統(tǒng)的綜合業(yè)務(wù)數(shù)據(jù)采集系統(tǒng)的開發(fā)研究
        日本视频中文字幕一区在线| 久久久噜噜噜久久中文福利| 久久国产精品久久久久久| 精品久久久久久久久午夜福利| 欧美成人网视频| 成人av资源在线播放| 亚洲av中文无码乱人伦在线咪咕| 成av人片一区二区三区久久| 一区二区三区日本大片| 亚洲免费一区二区av| 亚洲a∨无码精品色午夜| 国产久热精品无码激情| 欧美色资源| 亚洲六月丁香色婷婷综合久久| 天堂影院久久精品国产午夜18禁| 国产精品一区二区三区卡| 亚洲av无码专区在线播放中文| 免费一级毛片麻豆精品| 韩国女主播一区二区三区在线观看 | 欧美最猛黑人xxxx| 3344永久在线观看视频| 无码啪啪熟妇人妻区| 国产主播性色av福利精品一区| 制服丝袜中文字幕在线| 亚洲av日韩综合一区在线观看 | 一区二区三区精品免费| 先锋五月婷婷丁香草草| 日韩手机在线免费视频| 国产一区二区三区免费小视频| 青青草精品在线视频观看| 无码精品日韩中文字幕| 欧美黑人又粗又大久久久| 人妻精品一区二区免费| 美女视频一区二区三区在线| 插b内射18免费视频| 欧美成人看片黄a免费看| 久久国产A∨一二三| 人妻中文字幕日韩av| 久精品国产欧美亚洲色aⅴ大片| 自拍亚洲一区欧美另类| 亚洲国产一区一区毛片a|