爬取林丹和趙雅淇的微博評論,看看網友都說了些什麼

7 月 4 日,林丹在微博上宣佈了本身退役的消息,7 月 6 日,林丹出軌女主趙雅淇發文訴委屈,先簡單看一下他們發的微博。html


對於他們的微博內容,這裏不作評價,咱們使用 Python 爬取他們所發微博下面的評論信息,看看網友都說了些什麼。python

爬取

爬取以前,先簡單瞭解一下微博,微博主要有以下三種展現形式:json

其中移動端爬取相對容易一些,這裏咱們就從移動端下手,首先在瀏覽器上輸入 http://weibo.cn 打開,以下圖所示:瀏覽器

咱們能夠看到有一個搜索框,咱們能夠經過它來找人,以林丹爲例,咱們在搜索框輸內入林丹以後點擊找人按鈕,就能夠搜到林丹的微博了,以下圖所示:cookie

咱們點擊其微博名進入微博主頁,以下圖所示:app

接着打開開發者工具並選擇 Network,而後點擊評論,以下圖所示:函數

由於評論內容較多,查看更多內容是須要翻頁的,咱們將頁面向下拉,能夠看到翻頁按鈕,咱們點下頁看一下其具體請求,以下圖所示:工具

上圖中的 Request URL 中的 page 參數前面是固定的,page 是頁號,爬取時咱們須要用到的就是這個 URL,除此以外,咱們還須要用到 cookieuser-agent 參數,在下面的 Request Headers 中就可找到,以下圖所示:url

須要用的東西找齊了以後,咱們就能夠爬取評論了,主要代碼實現以下:spa

# 爬取一頁評論內容
def get_one_page(url):
    headers = {
        'User-agent' : '本身的User-agent',
        'Host' : 'weibo.cn',
        'Accept' : 'application/json, text/plain, */*',
        'Accept-Language' : 'zh-CN,zh;q=0.9',
        'Accept-Encoding' : 'gzip, deflate, br',
        'Cookie' : '本身的Cookie',
        'DNT' : '1',
        'Connection' : 'keep-alive'
    }
    # 獲取網頁 html
    response = requests.get(url, headers = headers, verify=False)
    # 爬取成功
    if response.status_code == 200:
        # 返回值爲 html 文檔,傳入到解析函數當中
        return response.text
    return None

# 解析保存評論信息
def save_one_page(html):
    comments = re.findall('<span class="ctt">(.*?)</span>', html)
    for comment in comments[1:]:
        result = re.sub('<.*?>', '', comment)
        if '回覆@' not in result:
            with open('ld_comment.txt', 'a+', encoding='utf-8') as fp:
                fp.write(result)

最終,咱們將評論信息爬取後存到了 txt 文件中。

詞雲展現

接下來咱們將網友評論信息作成詞雲看一下,詞雲以前咱們也作過,這裏再也不多說,看一下主要的代碼實現:

def jieba_():
    stop_words = []
    with open('stop_words.txt', 'r', encoding='utf-8') as f:
        lines = f.readlines()
        for line in lines:
            stop_words.append(line.strip())
    content = open('ld_comment.txt', 'rb').read()
    # jieba 分詞
    word_list = jieba.cut(content)
    words = []
    for word in word_list:
        if word not in stop_words:
            words.append(word)
    global word_cloud
    # 用逗號隔開詞語
    word_cloud = ','.join(words)

def cloud():
    # 打開詞雲背景圖
    cloud_mask = np.array(Image.open('bg1.png'))
    # 定義詞雲的一些屬性
    wc = WordCloud(
        # 背景圖分割顏色爲白色
        background_color='white',
        # 背景圖樣
        mask=cloud_mask,
        # 顯示最大詞數
        max_words=200,
        # 顯示中文
        font_path='./fonts/simhei.ttf',
        # 最大尺寸
        max_font_size=40
    )
    global word_cloud
    # 詞雲函數
    x = wc.generate(word_cloud)
    # 生成詞雲圖片
    image = x.to_image()
    # 展現詞雲圖片
    image.show()
    # 保存詞雲圖片
    wc.to_file('ld.png')

咱們先來看一下用林丹微博評論生成的詞雲圖,以下所示:

再來看一下用趙雅淇微博評論生成的詞雲圖,以下所示:

最後,咱們看一下林、趙的全部評論生成的詞雲圖,以下所示:

源碼在下方公號後臺回覆 200707 獲取。

二維碼小.PNG

相關文章
相關標籤/搜索