這裏是三歲,這裏是小白逆襲大神最後的大作業,鯉魚躍龍門最後一躍,該項目的最後一躍卻是我們大家打碼寫bug的開始,那麼開始白話講解大作業⑧~~~
參考地址:https://aistudio.baidu.com/aistudio/index
作業
第一步:愛奇藝《青春有你2》評論數據爬取(參考鏈接:https://www.iqiyi.com/v_19ryfkiv8w.html#curid=15068699100_9f9bab7e0d1e30c494622af777f4ba39)
爬取任意一期正片視頻下評論
評論條數不少於1000條
第二步:詞頻統計並可視化展示
數據預處理:清理清洗評論中特殊字符(如:@#¥%、emoji表情符),清洗後結果存儲爲txt文檔
中文分詞:添加新增詞(如:青你、奧利給、衝鴨),去除停用詞(如:哦、因此、不然、也好、但是)
統計top10高頻詞
可視化展示高頻詞
第三步:繪製詞雲
根據詞頻生成詞雲
可選項-添加背景圖片,根據背景圖片輪廓生成詞雲
第四步:結合PaddleHub,對評論進行內容審覈
作業劃分
- 爬蟲——爬取評論
- 數據清洗——替換無用信息
- 分詞——jieba庫的使用
- 詞雲——wordcloud庫的使用
- PaddleHub,對評論進行內容審覈
爬蟲
爬蟲!和之前一樣 使用requese庫,但是分析數據以後發現是json數據不需要bs4
那麼就開始分析數據⑧
在頁面找不到數據,進行抓包查看頁面的數據
network是抓包查看各類數據集
all 所有數據
prevew 預覽當前信息
經過預覽該網頁的信息沒有發現有用的數據有可能是同步逐漸加載的那麼就要繼續尋找
我們在network
進行抓包
看到網頁最下面有加載更多評論,這裏說不定是一個突破口
我們按左邊那個小圈圈,把network頁面的數據清空,然後點擊查找更多評論!
奇蹟就在眼前!
出現了評論,被找到了,排除照片,那麼剩下來的就2選一了
經過預覽就能夠找到所在的包
找到了api和請求方式那麼就可以查找到所在的頁面
經過比較發現這些api沒有特性不能夠翻頁,那麼怎麼辦???
對 url 進行處理把沒有用的數據進行刪除(不要問我這麼知道有沒有用,我只能夠說我是一個個試的)
找到所有的&鍵他們是數據的分隔線,把部分內容刪除如果能夠正常訪問就不影響,如果影響就不能夠刪除直到最簡
'https://sns-comment.iqiyi.com/v3/comment/get_comments.action?
agent_type=118&business_type=17&content_id=15068699100&last_id={list_id}#在list_id裏面加上用戶id
這樣子api就OK了
這樣子用requests進行獲取就可以
獲得的數據是json數據
採用json轉字典就好處理了
仔細觀察會發現content裏面的數據就是我們要的,經過字典然後加上循環就可以獲取了,不多說加油!!!
數據清洗
使用jieba庫 ,jieba庫和wordcloud中自帶停用詞庫和分詞庫不過時長更新都是5年前了
需要我們自己根據需要添加
當判斷到和停用詞一樣時就會用空格進行處理
#停用詞導入
stopwords = [line.strip() for line in open('停用詞庫地址', 'r', encoding='UTF-8').readlines()]
如何把那些標點什麼的清除?正則!!!
s = re.sub(r"</?(.+?)>| |\t|\r", "", content)
s =re.sub(r"\n", "", s)
s =re.sub(r"\*", "\\*", s)
s =re.sub("\u4e00-\u9fa5^a-z^A-Z^0-9", "", s)
s = re.sub( '[\001\002\003\004\005\006\007\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a]+', '', s)
s = re.sub('[a-zA-Z]', "", s)
s = re.sub('^\d+(\.\d+)?$', "", s)
s = re.sub(u'[\U00010000-\U0010ffff]', ' ',s)
s = re.sub(u'[\uD800-\uDBFF][\uDC00-\uDFFF]', ' ', s)
for ch in ',。;:“”、》《、|*&…🙏!♥♡😊🌚?💚√🍼【】💔🐴]๑👍[🌟😘🤘ノ🐱👩❤“💎🌸💙😁❄,≧▽≦👀🐶🍬😂 !🧡😃 ヾ↗~↖^ 🏻🍋~♀٩௰^ و˃͈ ̶ω˂😆௰ ˂🔒🧍💛💚💖Ő ∀Ő∀✔🤠( ง _ • 。́ ) ง🔒✨🍑💙💜👧🐛🐟✊🌠🌨💪⭐”…':
s = s.replace(ch, ' ')
大家好奇的分詞新建的add_vords.txt是什麼東西?
小編給大家準備了一部分
詞彙 頻率 詞性 其中頻率和詞性可以省略
青你 3 n 奧利給 999 n 衝鴨 999 n 喻言 66 n 虞書欣 999 n 趙小棠 999 n 宋昭藝 999 n
劉雨昕 999 n 孔雪兒 999 n 安崎 999 n 謝可寅 999 n 上宮喜愛 999 n 許佳琪 999 n
創造營 999 n 符雅凝 999 n 大魚海棠 999 n 愛你 999 n 練習生 999 n 練習室999 n
還有的你自己加
其實在jieba文件裏面就有一個,如果長期需要的可以在那裏面修改!
詞雲嘛昨天有舉例跟着修改就可以
有好多人在統計時發現有分詞錯誤的現象,爲了更加真實,做了以下判斷
#在什麼位置自己確認!!!
for word in words:
if word not in stopwords:
i = 0
if word != 1:
if word == '虞書' or word == '欣虞書' or word == '欣書' :
word = '虞書欣'
elif word == '喻言衝' or word == '投喻言' or word == '言喻' :
word = '喻言'
elif word == '謝可寅謝' or word == '可寅謝' or word == '可寅':
word = '謝可寅'
elif word == '孔' or word== '雪兒' :
word = '孔雪兒'
i += 1
if word == '孔雪兒' and i%2 == 0:
outstr[word] = outstr.get(word, 0) + 1
continue
elif word == ' ' or word == '':
continue
outstr[word] = outstr.get(word, 0) + 1
這個是許多小白懵逼的地方,我也一樣,後來才知道,這個是主函數,函數入口(差不多這個意思,理解就好,具體的我也所不清楚,說了也錯)
目前能夠說的就這麼多,至於那個調用分析,大家多找找大神,我無能爲力
謝謝大家的支持有什麼不對的請多多指教!!!