1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        爬取微博爆搜第一的ZW評論,來看看大家都評論了什么~

        共 2099字,需瀏覽 5分鐘

         ·

        2022-05-17 05:27

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

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



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


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


        01

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


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



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


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


        接下來對不同頁面之間的URL進(jìn)行觀察



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



        但是這樣還不能夠全部都訪問,具體的原因和改進(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條評論數(shù)據(jù),在做可視化分析之前,我們要先對其進(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)

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


        03

        可視化展示


        01

        ?頻率top10詞語



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


        代碼如下:

        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

        ?情感分析


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


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


        從圖中,我們可以看到,大家的評論積極態(tài)度的有1453條,平和態(tài)度的有882條,消極態(tài)度只有1457條,看來大家對這件事的看法各有各的觀點(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:\蘇新詩柳楷簡.ttf",
        width=400, height=300, random_state=42,
        mask=imread('xin.jpg', pilmode="RGB")
        )
        wc.generate(contents_list_job_title)
        wc.to_file("推薦語.png")


        04

        小結(jié)


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

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

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




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

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


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

        手機(jī)掃一掃分享

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

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            三级在线网 | 深夜办公室老板揉我胸摸下边 | 国产精品豆花视频www | 看一级黄色视频 | www.碰 | www.超碰在线.com | 国产又粗又硬又爽 | 美女尻屄 | jizzjizz中国精品麻豆 | 水多多精品视频在线观看 |