【Python】我用python爬取一月份微博熱搜數據來分析人們對新型肺炎的關注程度變化

2020年1月23日,睡醒一覺,發現新型肺炎的影響正在以肉眼可見的速度擴散,已經放假的我只能宅在家裏,不敢隨便外出。實在閒得無聊,我便拿起了技術人的工具,利用python,用數據來簡單分析一波新型肺炎的影響程度,同時,大人們對這次事件好像毫無畏懼,多次提醒出門要小心留意,結果大人們也只是敷衍回答:沒事。所以,咱們用數據來說話,通過最近網上的熱搜數據讓家長們重視起來。

 

獲取熱搜數據

那需要的微博熱搜歷史數據在哪找?藉助【熱搜神器】網站,可以查找微博熱搜歷史記錄。

如上圖,打開【熱搜神器】網站,F12進入Network查看Request URL,通過點擊可以發現URL中只有timeid是變化的,所以就找到了所需要的URL,即url = 'https://www.eecso.com/test/weibo/apis/currentitems.php?timeid=' + str(time_id),而最新的timeid可以通過另一地址獲取:https://www.eecso.com/test/weibo/apis/getlatest.php。在這裏我使用了2020-01-01到2020-01-23 0點和12點兩個時間點的time_id,遍歷這個區間,通過requests即可獲取2020年1月1日到最新日期的熱搜數據。

 

處理數據

請求返回的數據是json格式的數據,通過json解析處理後保存到列表中,同時我也另存到csv格式文件中備份了數據。部分代碼如下所示。

def requests_web_data(url):
    try:
        headers = {"User-Agent": "", "Cookie": ""}
        r = requests.get(url, headers=headers)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
    except:
        print('requests error!')
    else:
        return r.content

def get_weibo_historical_data():
    latest_time_id_url = 'https://www.eecso.com/test/weibo/apis/getlatest.php'
    latest_time_id = json.loads(requests_web_data(latest_time_id_url).decode('utf-8'))[0]  
    # 篩選獲取time_id
    time_ids = []
    for x in range(48438, int(latest_time_id) + 1, 180):    # time_id=48438:2020-01-01
        time_id_url = 'https://www.eecso.com/test/weibo/apis/getlatest.php?timeid=' + str(x)
        time_data = json.loads(requests_web_data(time_id_url).decode('utf-8'))
        if time_data is not None:
            time = time_data[1].split(' ')[1].split(':')[0]
            if time == '00' or time == '12':
                time_ids.append(time_data[0])
    if time_ids[-1] != latest_time_id:
        time_ids.append(latest_time_id)
    #通過篩選的time_id獲取一月份的熱搜數據
    weibo_hot_data = []
    for time_id in time_ids:
        historical_data_url = 'https://www.eecso.com/test/weibo/apis/currentitems.php?timeid=' + str(time_id)
        data = json.loads(requests_web_data(historical_data_url).decode('utf-8'))
        weibo_hot_data.append(data)
    return weibo_hot_data

 

數據分析

通過以上操作已經獲取到了需要的熱搜數據,接下來就是通過pyecharts進行數據分析。寫這篇文章時,獲取到的數據時間段爲2020年1月1日到2020年1月23日。

1、1月份TOP20熱搜數據

1月份熱搜數量最大的前20個數據,幾乎一半是關於新型肺炎的。其他事件也有些是由肺炎引發的,如最新的春節檔電影全部撤檔也是因爲在一個封閉的空間看電影存在着一定風險導致取消了春節電影檔,但我是大力支持撤檔的,畢竟關鍵時期對自己負責也就是對他人負責。

2、1月份武漢新型肺炎相關熱搜的爬升程度

從圖可以明顯看到,1月初已經有肺炎相關的熱搜信息,但這期間關於肺炎的信息時有時無,說明大家對肺炎的事情是還沒有放在心上的,直到18號左右,有關肺炎的熱搜信息就開始出現井噴,我記得那時候是因爲ZF公佈了病例的相關情況(出現死亡了),這也基本符合各大媒體對其的報道數量趨勢,說明18號開始人們對該事件重視起來了,這也導致後面的口罩出現售空,限購。

3、武漢新型肺炎相關的熱搜事件

大家都搜索新型肺炎以下幾方面的信息,基本上是圍繞着武漢、肺炎、預防和口罩等關鍵字。

4、詞雲顯示武漢新型肺炎相關的熱搜事件

最後通過詞雲,我們可以更加明顯的看到大家關注的信息點。

5、結語

各種如何預防病毒,病毒信息等網上,電視上都很多了,我這裏就不附圖了,最後:

 

附丁香醫生的全國新型肺炎疫情實時動態網址:https://3g.dxy.cn/newh5/view/pneumonia?from=timeline&isappinstalled=0

 

 

如有問題,可聯繫我

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章