天天看點

Python爬取《哆啦A夢-伴我同行2》影評,這部的寓意是啥?詞雲來劇透!

本文簡介

《哆啦A夢:伴我同行2》是紀念《哆啦A夢》50周年的作品之一,于2021年5月28日在中國内地上映。

哆啦A夢

系列,是陪伴我,乃至陪伴了幾代人成長的故事。50年來,藤子·F·不二雄先生創造了

竹蜻蜓

任意門

時光機器

等等無數的新奇道具,讓大雄和他的小夥伴們經曆了諸如宇宙戰争、恐龍時代等各種冒險,也經曆了許多充滿戲劇性的啼笑皆非的日常。

正直

六一兒童節

前後,聽說大雄和靜香也結婚了,我特意寫了這篇文章,手把手教大家怎麼繪制詞雲圖。

Python爬取《哆啦A夢-伴我同行2》影評,這部的寓意是啥?詞雲來劇透!

好了,這篇文章是基于

豆瓣

電影評論的

詞雲圖

繪制。通過這篇文章,你将會收貨:

  • ① 豆瓣電影資料的爬取;
  • ② 手把手教你學會詞雲圖的繪制;

豆瓣爬蟲步驟

當然,豆瓣上面有很多其他的資料,值得我們爬取後做分析。但是本文我們僅僅爬取評論資訊。

由于隻有一個字段,我們直接使用re正規表達式,解決該問題。

Python爬取《哆啦A夢-伴我同行2》影評,這部的寓意是啥?詞雲來劇透!

那些爬蟲小白看過來,這又是一個你們練手的好機會。

下面直接為大家講述爬蟲步驟:

# 1. 導入相關庫,用什麼庫,都寫在這裡
import requests
import chardet
import re

# 2. 構造請求頭,這是一個反扒措施,初期學會總結,哪些網站都用了哪些,總結多了,用起來就得心應手。
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36',
    #在爬蟲裡面如果出現了Referer最好也粘上去,因為有時候伺服器會根據Referer來判斷請求時由浏覽器還是爬蟲發出的
    'Referer':'https://www.douban.com/'
}

# 3. 這個循環,類似于翻頁操作
for i in range(0,1001,20):
    url = f"https://movie.douban.com/subject/34913671/comments?start={i}&limit=20&status=P&sort=new_score"
    # 4. 使用requests庫發起請求
    response = requests.get(url,headers=headers)#發起請求得到響應
    # 5. 有時候傳回結果可能會亂碼,這裡記得調用encoding屬性,修改編碼
    response.encoding = "utf-8"
    # 6. 擷取傳回的結果,調用的是text屬性。一定要區分text和content屬性的差別
    text = response.text#傳回一個經過解碼的字元串
    # 7. 解析資料,這裡直接使用正則解析
    comments_list = [i for i in re.findall('<span class="short">(.*?)</span>',text,re.S)]
    # 8. 資料存儲,針對清單中的每一條資料,我們直接使用open()函數,寫入到txt文檔
    for comment in comments_list:
         with open(r"哆啦A夢:伴我同行2.txt","a",encoding = "utf-8") as f :  
                    f.write(comment + "\n")
           

最終效果如下:

Python爬取《哆啦A夢-伴我同行2》影評,這部的寓意是啥?詞雲來劇透!

詞雲圖制作流程

很多同學不會制作詞雲圖,借此機會,我這裡寫一套詳細的流程,大家

照貓畫虎

就行。

繪制詞雲圖的詳細步驟如下:

  • ① 導入相關庫;
  • ② 讀取文本檔案,使用jieba庫動态修改詞典;
  • ③ 使用jieba庫中的lcut()方法進行分詞;
  • ④ 讀取停用詞,添加額外停用詞,并去除停用詞;
  • ⑤ 詞頻統計;
  • ⑥ 繪制詞雲圖

① 導入相關庫

在這裡,你需要什麼庫,就導入什麼庫。

import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from imageio import imread

import warnings
warnings.filterwarnings("ignore")
           

② 讀取文本檔案,使用jieba庫動态修改詞典

這裡with open()讀取文本檔案,我就不解釋了。這裡解釋一下

動态修改詞典

sentence = "湖北廣水第三條街,有一條狗"

list(jieba.cut(sentence))
           

結果如下:

Python爬取《哆啦A夢-伴我同行2》影評,這部的寓意是啥?詞雲來劇透!

針對上述切分結果,如果我們想把“湖北廣水”和“第三條街”都當成一個完整詞,而不切分開,怎麼辦呢?此時,就需要借助add_word()方法,動态修改詞典。

sentence = "湖北廣水第三條街,有一條狗"

jieba.add_word("湖北廣水")
jieba.add_word("有一條狗")

list(jieba.cut(sentence))
           

結果如下:

Python爬取《哆啦A夢-伴我同行2》影評,這部的寓意是啥?詞雲來劇透!

總結:

  • jieba.add_word()方法,隻能一個個動态添加某個詞語。
  • 假如我們需要動态添加多個詞語的時候,就需要使用jieba.load_userdict()方法。也就是說:将所有的自定義詞語,放到一個文本中,然後使用該方法,一次性動态修改詞典集。

有了上述基礎,我們直接讀取文本後,動态修改詞典。

with open(r"哆啦A夢:伴我同行2.txt",encoding="utf-8") as f:
    txt = f.read()
txt = txt.split()

jieba.add_word("哆啦A夢")
jieba.add_word("大雄")
           

③ 使用jieba庫中的lcut()方法進行分詞

短短的一行代碼,很簡單。

data_cut = [jieba.lcut(x) for x in txt]
           

④ 讀取停用詞,添加額外停用詞,并去除停用詞

讀取停用詞,采用split()函數切分後,會得到一個

停用詞清單

。接着,采用

+号

将額外停用詞,添加到清單中即可。

# 讀取停用詞
with open(r"stoplist.txt",encoding="utf-8") as f:
    stop = f.read()
stop = stop.split()
# 額外添加停用詞,這裡我們隻添加了一個空格
stop = [" "] + stop
# 去除停用詞
s_data_cut = pd.Series(data_cut)
all_words_after = s_data_cut.apply(lambda x:[i for i in x if i not in stop])
           

⑤ 詞頻統計

這裡注意series中value_counts()的使用。

all_words = []
for i in all_words_after:
    all_words.extend(i)
    
word_count = pd.Series(all_words).value_counts()
           

⑥ 繪制詞雲圖

# 1、讀取背景圖檔
back_picture = imread(r"aixin.jpg")

# 2、設定詞雲參數
wc = WordCloud(font_path="simhei.ttf",
               background_color="white",
               max_words=2000,
               mask=back_picture,
               max_font_size=200,
               random_state=42
              )
wc2 = wc.fit_words(word_count)

# 3、繪制詞雲圖
plt.figure(figsize=(16,8))
plt.imshow(wc2)
plt.axis("off")
plt.show()
wc.to_file("ciyun.png")
           

結果如下:

Python爬取《哆啦A夢-伴我同行2》影評,這部的寓意是啥?詞雲來劇透!

從詞雲圖大緻可以看出:這又是一部催淚電影,這是一部情懷電影,陪伴我們長大的大雄都結婚了?那我們呢?其實我們小時候,就盼望着大雄和靜香能夠是好盆友,就在這部電影,他們結婚了。這部電影應該怎麼上演呢?大家可以去電影院一探究竟。

其實看到胖虎為大雄出頭的時候,小編就淚目了!爺青結啊

近期有很多朋友通過私信咨詢有關Python學習問題。為便于交流,點選藍色自己加入讨論解答資源基地