7 月 4 日,林丹在微博上宣佈了本身退役的消息,7 月 6 日,林丹出軌女主趙雅淇發文訴委屈,先簡單看一下他們發的微博。html
對於他們的微博內容,這裏不作評價,咱們使用 Python 爬取他們所發微博下面的評論信息,看看網友都說了些什麼。python
爬取以前,先簡單瞭解一下微博,微博主要有以下三種展現形式:json
其中移動端爬取相對容易一些,這裏咱們就從移動端下手,首先在瀏覽器上輸入 http://weibo.cn
打開,以下圖所示:瀏覽器
咱們能夠看到有一個搜索框,咱們能夠經過它來找人,以林丹爲例,咱們在搜索框輸內入林丹以後點擊找人
按鈕,就能夠搜到林丹的微博了,以下圖所示:cookie
咱們點擊其微博名進入微博主頁,以下圖所示:app
接着打開開發者工具並選擇 Network
,而後點擊評論
,以下圖所示:函數
由於評論內容較多,查看更多內容是須要翻頁的,咱們將頁面向下拉,能夠看到翻頁按鈕,咱們點下頁
看一下其具體請求,以下圖所示:工具
上圖中的 Request URL
中的 page 參數前面是固定的,page 是頁號,爬取時咱們須要用到的就是這個 URL,除此以外,咱們還須要用到 cookie
和 user-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 獲取。