看看你愛的他今天是什麼‘顏色‘ -- Python爬取微博評論製作專屬偶像詞雲

2020-08-13 16:12:47

簡介:快來拿出你珍藏的pick star,用大家對他的愛重塑一個他吧。通過爬取微博評論,製作你的偶像圖片詞雲,天天都是不重樣的哦!

很多人學習python,不知道從何學起。
很多人學習python,掌握了基本語法過後,不知道在哪裏尋找案例上手。
很多已經做案例的人,卻不知道如何去學習更加高深的知識。
那麼針對這三類人,我給大家提供一個好的學習平臺,免費領取視訊教學,電子書籍,以及課程的原始碼!
QQ羣:101677771

06月03號,英雄聯盟史上永遠的神--UZI退役,一代傳奇落下帷幕。

 

作爲聯盟史上頗有爭議的ADC選手,"狗黑"和"狗吹"無時無刻不展開着激烈的鍵盤搏殺。那麼,在3號UZI的退役微博下,是哪一種聲音更多呢?下面 下麪讓我們一起通過Python爬取微博評論,科學的分析一下吧!

 

  • 準備工作

首先,我們找到UZI的退役微博評論介面(淚目..):

 

此時,利用谷歌瀏覽器的抓包工具,即點選F12,清空所有連線後,F5重新整理,看到評論爲下面 下麪的鏈接:

 

記住右邊標註紅框的部分,一會需要用到它來爬取評論。

同時點選左邊第二行hotflow?id...那個network,找到Cookie值,將他複製下來,備用。

 

然後,通過觀察翻頁規律,發現第二頁比首頁評論多了一個參數max_id,而這個參數可以在首頁的頁面返回值中拿到。故想獲得n頁的鏈接,只需要解析n-1頁就可以了。

 

  • 爬微博評論階段

    首先構造請求頭,通過requests庫得到頁面響應。

headers = {    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36',    'Accept': 'application/json, text/plain, */*', 'MWeibo-Pwa': '1',    'Referer': 'https://m.weibo.cn/detail/%s' % mid, 'X-Requested-With': 'XMLHttpRequest',    'Cookie': '複製的Cookie值'    }url = args.urlif num > 1:    url = 'https://m.weibo.cn/comments/hotflow?id={}&mid={}&max_id={}&max_id_type=0'.format(mid, mid, max_id)response = requests.get(url, headers=headers

接下來對返回值進行解析:


 

comment = item['text']comment = emoji.demojize(comment)comment = re.sub('<span.*</span>', ' ', comment)comment = re.sub('<a.*>', ' ', comment)name = item['user']['screen_name']created_at = itemi['created_at']

通過回圈獲取每條評論的使用者名稱、評論時間和評論內容,並對評論內容做去表情和圖片鏈接的處理,最後儲存爲csv檔案:

df = pd.DataFrame({'使用者名稱': name_list, '評論': comment_list, '時間': created_at_list})df = df.drop_duplicates()df.to_csv('comments.csv', index=False)

結果如圖(二次淚目中...):

這樣一個簡單的爬蟲就處理完成了,食材準備好了,主食就應該開火了,起鍋燒油!

 

偶像詞雲製作

首先,選擇你最愛的偶像的照片,這裏選擇狂小狗童鞋:

 

 

然後進行摳圖、配上白色背景(如果不進行這一步,最後製作的詞雲可能會因爲色差不明顯導致有噪音):

 

rmbg = RemoveBg("你的api", "error.log")rmbg.remove_background_from_img_file(path)
img = cv2.imread(path, -1) img_copy = img.copy() img_shape = img_copy.shape width = img_shape[0] height = img_shape[1] for yh in range(height): for xw in range(width): color_d = img_copy[xw, yh] if color_d[3] == 0: img_copy[xw, yh] = [255, 255, 255, 255]

上述程式碼需要用到removebg模組的api,搜尋這個模組,註冊一下就可以拿到,很簡單。

 

經過這兩步處理後,就可以進行詞雲的製作了。

wc = WordCloud(font_path='simkai.ttf', background_color='white', mask=img)wc.generate_from_frequencies(words)wc.to_file(os.path.join(savepath, title+'.png'))

效果如下圖:

 

可見,人們對於簡自豪UZI的退役還是懷念與祝福佔主流的,一員老將的離去,標誌着一部分人青春的結束,但是未來的旅程也會同樣精彩的!

 

 

不只是UZI,你喜歡的偶像是誰呢?準備一張他的美照,輸入啓動命令'python crawling.py --url 評論鏈接 --image 美照地址',就可以進行詞雲自動生成了。