<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          爬取微博爆搜第一的ZW評(píng)論,來(lái)看看大家都評(píng)論了什么~

          共 2099字,需瀏覽 5分鐘

           ·

          2022-05-17 05:27

          ↑?關(guān)注 + 星標(biāo)?,每天學(xué)Python新技能

          后臺(tái)回復(fù)【大禮包】送你Python自學(xué)大禮包



          最近一段時(shí)間,關(guān)于ZW的話題頻頻登上熱搜,就比如今天就登上了熱搜榜第一,并且是爆款。


          讓我們用Python來(lái)帶大家看看微博上的網(wǎng)友們是怎么來(lái)評(píng)論的,這次的事情的~


          01

          數(shù)據(jù)采集


          我們是從微博移動(dòng)端來(lái)進(jìn)行數(shù)據(jù)采集的。我們按F12,打開開發(fā)者模式,對(duì)網(wǎng)頁(yè)進(jìn)行觀察



          我們發(fā)現(xiàn)數(shù)據(jù)存儲(chǔ)的網(wǎng)頁(yè)是一個(gè)hotflow開頭的頁(yè)面,它的數(shù)據(jù)存儲(chǔ)的方式是Ajax,那我們就可以知道請(qǐng)求的頁(yè)面和提取數(shù)據(jù)的方式了。


          在上面,我們已經(jīng)找到數(shù)據(jù)存儲(chǔ)的網(wǎng)頁(yè)和方式,那么只需要找到頁(yè)面之間的聯(lián)系,構(gòu)造好循環(huán),就可以批量開始爬取啦~


          接下來(lái)對(duì)不同頁(yè)面之間的URL進(jìn)行觀察



          它們URL里面的id和mid是固定不變的,但是max_id是變化的,然后我又在頁(yè)面里面發(fā)現(xiàn)了max_id值的規(guī)律,每一頁(yè)的max_id的值都在上一頁(yè)中存儲(chǔ)著。



          但是這樣還不能夠全部都訪問(wèn),具體的原因和改進(jìn)措施,這里因?yàn)槠?,志斌就不介紹了,有興趣的讀者可以看看這兩篇文章,有詳細(xì)解釋

          數(shù)據(jù)采集的核心代碼:

          import requests
          import re
          for page in range(1,10000):
          if page == 1 :
          params = (
          ('id', '4714646055423756'),
          ('mid', '4714646055423756'),
          ('max_id_type', '0'),
          )
          response = requests.get('https://m.weibo.cn/comments/hotflow', headers=headers, params=params)
          a = response.json()['data']['max_id']
          b = response.json()['data']['max_id_type']
          for i in response.json()['data']['data']:

          neirong = re.sub(r'<[^>]*>', '', i['text'])
          with open(r'liba2.txt', 'a', encoding='utf-8') as f:
          f.write(f'{neirong}\n')


          02

          分詞處理


          我們一共爬取了3792條評(píng)論數(shù)據(jù),在做可視化分析之前,我們要先對(duì)其進(jìn)行分詞優(yōu)化處理,代碼如下:

          with open('liba2.txt','r',encoding='utf-8') as f:
          read = f.read()
          with open('停用詞表.txt','r',encoding='utf-8') as f:
          stop_word = f.read()
          word = jieba.cut(read)
          words = []
          for i in list(word):
          if i not in stop_word:
          words.append(i)

          我們來(lái)看一下分詞結(jié)果:


          03

          可視化展示


          01

          ?頻率top10詞語(yǔ)



          由上圖可知,“知網(wǎng)”的詞頻最高,原因應(yīng)該是主題是知網(wǎng),其次是“哈哈哈”,看來(lái)我跟大家的想法都是一樣的!


          代碼如下:

          columns = []
          data = []
          for k,v in dict(Counter(words).most_common(10)).items():

          columns.append(k)
          data.append(v)
          bar = (
          Bar()
          .add_xaxis(columns)
          .add_yaxis("詞頻", data)
          .set_global_opts(title_opts=opts.TitleOpts(title="詞頻top10"))
          )
          bar.render("詞頻.html")


          02

          ?情感分析


          在之前跟大家介紹過(guò)兩種文本情感分析方法,有興趣的讀者可以看看這篇文章推薦一個(gè)強(qiáng)大的自然語(yǔ)言處理庫(kù)—snownlp


          在本文,我使用的是Snownlp庫(kù)來(lái)對(duì)文本進(jìn)行情感分析。


          從圖中,我們可以看到,大家的評(píng)論積極態(tài)度的有1453條,平和態(tài)度的有882條,消極態(tài)度只有1457條,看來(lái)大家對(duì)這件事的看法各有各的觀點(diǎn)呀!


          代碼如下:

          from snownlp import SnowNLP
          with open('liba2.txt','r',encoding='utf-8') as f:
          read = f.readlines()
          positibe = negtive = middle = 0
          for i in read:
          pingfen = SnowNLP(i)
          if pingfen.sentiments>0.7:
          positibe+=1
          elif pingfen.sentiments<0.3:
          negtive+=1
          else:
          middle+=1


          03

          ?詞云圖繪制



          代碼如下:

          from imageio import imread
          from wordcloud import WordCloud, STOPWORDS
          word =''
          for i in words:
          word+=i
          contents_cut_job_title = jieba.cut(word)
          contents_list_job_title = " ".join(contents_cut_job_title)
          wc = WordCloud(stopwords=STOPWORDS.add("一個(gè)"), collocations=False,
          background_color="white",
          font_path=r"K:\蘇新詩(shī)柳楷簡(jiǎn).ttf",
          width=400, height=300, random_state=42,
          mask=imread('xin.jpg', pilmode="RGB")
          )
          wc.generate(contents_list_job_title)
          wc.to_file("推薦語(yǔ).png")


          04

          小結(jié)


          1. 本文以微博熱搜第一ZW為例,詳細(xì)介紹了微博評(píng)論的爬取、分詞優(yōu)化處理和可視化展示方法。

          2. 對(duì)它的看法,歡迎大家到評(píng)論區(qū)發(fā)表。

          3. 本文僅供學(xué)習(xí)參考,不做它用。




          1. 一位60后老程序員從零學(xué)習(xí)Python的感悟

          2. 30個(gè)案例,305頁(yè)!超有趣的Python學(xué)習(xí)資料!


          瀏覽 59
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  韩国毛片在线播放 | 无码人妻一区二区三区综合另类 | 三级视频网站 | 国产黄色电影黄色视频一级片 | 3级网站在线观看 |