欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

用Python爬取QQ音樂評論并制成詞云圖的實(shí)例

系統(tǒng) 1685 0

環(huán)境:Ubuntu16.4 python版本:3.6.4 庫:wordcloud

這次我們要講的是爬取QQ音樂的評論并制成云詞圖,我們這里拿周杰倫的等你下課來舉例。

第一步:獲取評論

我們先打開QQ音樂,搜索周杰倫的《等你下課》,直接拉到底部,發(fā)現(xiàn)有5000多頁的評論。

用Python爬取QQ音樂評論并制成詞云圖的實(shí)例_第1張圖片

這時候我們要研究的就是怎樣獲取每頁的評論,這時候我們可以先按下F12,選擇NetWork,我們可以先點(diǎn)擊小紅點(diǎn)清空數(shù)據(jù),然后再點(diǎn)擊一次,開始監(jiān)控,然后點(diǎn)擊下一頁,看每次獲取評論的時候訪問獲取的是哪幾條數(shù)據(jù)。最后我們就能看到下圖的樣子,我們發(fā)現(xiàn),第一條數(shù)據(jù)就是我們所要找的內(nèi)容,點(diǎn)擊第一條數(shù)據(jù),打開它的response拉到最下面,發(fā)現(xiàn)他的最后一條評論rootcommentcontent跟我們網(wǎng)頁中最后一條評論是一致的,那這時候已經(jīng)成功了一般了,我們接下來只需要研究這條數(shù)據(jù)獲取的規(guī)律就可以獲取到所有的評論了。

用Python爬取QQ音樂評論并制成詞云圖的實(shí)例_第2張圖片

我們先查看這條數(shù)據(jù)的Headers分析下Request URL,通過點(diǎn)開不同的頁碼進(jìn)行比較,發(fā)現(xiàn)每次發(fā)出的情況網(wǎng)址大部分內(nèi)容是相同,不同的地方有兩個,就是pagenum跟JsonCallBack,pagenum從英文上很明顯能看出來就是頁碼,JsonCallBack又是啥呢?

https://c.y.qq.com/base/fcgi-bin/fcg_global_comment_h5.fcg?g_tk=2058499274&jsonpCallback=jsoncallback7494258674829413&loginUin=2230661779&hostUin=0&format=jsonp&inCharset=utf8&outCharset=GB2312&notice=0&platform=yqq&needNewCode=0&cid=205360772&reqtype=2&biztype=1&topid=212877900&cmd=8&needmusiccrit=0&pagenum=4&pagesize=25&lasthotcommentid=song_212877900_23831021_1526748144&callback=jsoncallback7494258674829413&domain=qq.com&ct=24&cv=101010

用Python爬取QQ音樂評論并制成詞云圖的實(shí)例_第3張圖片

我們不妨將網(wǎng)址直接放在地址欄打開看看是怎樣。我們可以發(fā)現(xiàn)是直接返回一個不正規(guī)的json格式,為什么說是不正規(guī)呢?因?yàn)樗陂_頭多了個

jsoncallback7494258674829413

這個就是我們上面那個不知道怎么來的參數(shù),我們嘗試在把這個數(shù)據(jù)改一下后再打開網(wǎng)址,結(jié)果發(fā)現(xiàn),獲取的json內(nèi)容是沒有變化,唯一變的是開頭jsoncallback1111111111

變成了我們輸入的那個數(shù)值,所以我們可以猜測這是一個隨機(jī)數(shù),無論你輸入什么,都不會影響我們要獲取的內(nèi)容。那這樣就好辦多了。

用Python爬取QQ音樂評論并制成詞云圖的實(shí)例_第4張圖片

用Python爬取QQ音樂評論并制成詞云圖的實(shí)例_第5張圖片

我們就直接放代碼獲?。?

            
import requests
import json
def get_comment():
  for i in range(1,7000):
    # 打印頁碼
    print(i)
    # headers頭部
    headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0',
 'Referer': "https://y.qq.com/n/yqq/song/0031TAKo0095np.html"}
    # 請求的url
    url = 'https://c.y.qq.com/base/fcgi-bin/fcg_global_comment_h5.fcg?g_tk=2058499274&jsonpCallback=jsoncallback06927647062927766&loginUin=2230661779&hostUin=0&format=jsonp&inCharset=utf8&outCharset=GB2312&notice=0&platform=yqq&needNewCode=0&cid=205360772&reqtype=2&biztype=1&topid=212877900&cmd=8&needmusiccrit=0&pagenum=%s&pagesize=25&lasthotcommentid=song_212877900_3035803620_1526783365&callback=jsoncallback06927647062927766&domain=qq.com&ct=24&cv=101010' %i
    # 打印當(dāng)前訪問的url地址
    print (url)
    # 將請求得到的頁面賦值為req
    req = requests.get(url,headers=headers,verify=False)
    # 對獲取到的內(nèi)容進(jìn)行utf-8編碼
    html = str(req.content,'UTF-8')
    # 對非正規(guī)的json進(jìn)行處理,去掉頭部跟尾部多余的部分
    html= html.strip("jsoncallback06927647062927766(")
    html = html.replace(")","")
    # 去掉兩邊的空格
    html = html.strip()
    # 將處理后的json轉(zhuǎn)為python的json
    data = json.loads(html)
    # 獲取json中評論的部分
    list = data['comment']['commentlist']
    # 每次都重新定義一個列表來存儲每一頁的評論
    content = []
    # 遍歷當(dāng)前頁的評論并通過調(diào)用write()函數(shù)來保存
    for i in list:
      # 偶爾也會有一頁的評論獲取不到,這時候如果報錯了可以直接忽略那一頁,繼續(xù)運(yùn)行
      try:
        content.append(i['rootcommentcontent'].replace("[em]","").replace("[/em]","").replace("e400",""))
      except KeyError:
        content = []
        break
    write(content)
# 將當(dāng)前頁面的評論傳遞過來
def write(content):
  # 打開一個文件,將列表的內(nèi)容一行一行的存儲下來
  with open('comments.txt', 'a', encoding = 'UTF-8') as f:
    for i in range(len(content)):
      # 因?yàn)檗D(zhuǎn)為json后\n不胡自動換行,所以我們這里將\n給手換行
      string = content[i].split("\\n")
      for i in string:
        # 因?yàn)槌霈F(xiàn)了很多評論被刪除的情況,所有我們把這句給過濾掉
        i = i.replace("該評論已經(jīng)被刪除", "")
        # 打印每條評論
        print (i)
        # 將評論寫入文本
        f.writelines(i)
        # 給評論換行
        f.write("\n")
if __name__ == "__main__":
  get_comment()
          

寫入文檔的內(nèi)容大概就是這樣:

用Python爬取QQ音樂評論并制成詞云圖的實(shí)例_第6張圖片

獲取完之后我們就能用wordcloud來進(jìn)行詞云圖的制作了:

            
# -*- coding: utf-8 -*-
import jieba
from wordcloud import WordCloud, STOPWORDS
from os import path
from scipy.misc import imread
# 讀取mask/color圖片
d = path.dirname(__file__)
color_mask = imread("cyx.png")
#將爬到的評論放在string中
with open('nbzd.txt', 'r', encoding = 'UTF-8') as f:
  string = f.read()
  word = " ".join(jieba.cut(string))
  wordcloud = WordCloud(background_color='white',
             mask=color_mask,
             max_words=100,
             stopwords=STOPWORDS,
             font_path='/home/azhao/桌面/素材/simsun.ttc',
             max_font_size=100,
             random_state=30,
             margin=2).generate_from_text(word)
import matplotlib.pyplot as plt
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()
          

最后展示的結(jié)果是這樣的:

用Python爬取QQ音樂評論并制成詞云圖的實(shí)例_第7張圖片

以上這篇用Python爬取QQ音樂評論并制成詞云圖的實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久国产免费观看精品 | 日本在线观看免费视频 | 日韩欧美在线免费观看 | 久久人人爽人人爽人人片av不 | 色吊妞 | 六月丁香综合 | 精品一区二区三区在线播放 | 一区二区日韩精品 | 蜜桃精品久久久久久久免费影院 | 玖玖啪 | 免费午夜电影 | 特黄特色大片免费视频观看 | 四虎欧美在线观看免费 | 亚洲精品一区二区三区福利 | 添人人躁日日躁夜夜躁夜夜揉 | 999久久久国产999久久久 | 国产在线看片 | 99pao成人国产永久免费视频 | 日韩精选视频 | 欧美成人精品不卡视频在线观看 | 成人毛片视频在线播放 | 一本色道久久88加勒比—综合 | 色五月视频| 99久久精品国产毛片 | 国产精品亚洲va在线观看 | 97成人网在线碰碰碰 | 亚洲国产成人在线 | 蜜桃精品久久久久久久免费影院 | 精品久久久久久国产 | 激情一区二区三区成人 | 亚洲成人av一区二区 | 免费色视频 | 久草 在线 | av网址在线播放 | 国产精品视频观看 | 国产成人一区二区 | 四影虎影ww4hu55.com | 亚洲欧美国产日产综合不卡 | 九九热视频这里只有精品 | 波多野结衣三级视频 | 国产综合在线视频 |