分析咪蒙1013篇文章,300多萬字,她憑什麼會火?

文章首發於公衆號:程序員共成長java

咪蒙,文學碩士,駕馭文字能力極強。而且是一個擁有一千多萬粉絲,每篇文章閱讀量都100W+,頭條發個軟文都能賺80萬,永遠都能抓住粉絲G點的那個女人。python

1月份由於某篇文章,在網絡上被一大批網友炮轟。我也所以關注了她。一開始發現她的文章很是接地氣,基本都是和生活緊密相連,但看的多了,發現常常在文中很是平滑的挑起某種關係之間的矛盾。很大一部分文章都是圍繞女性展開話題。並且天天更新時間都在晚上十一點左右,幾乎歷來不間斷。包括春節。nginx

2015年9月15日,公衆號第一篇文章《女朋友對你做?你應該謝天謝地,由於她愛你》,直男癌表示理解不來這話什麼意思。 昨天公衆號註銷,又一次成爲熱點話題。歷史文章也都不能看了,好在今天一個小夥伴分享了咪蒙全部文章的壓縮包。程序員

由於是直接從文件中讀取數據,相比於從公衆號中抓取文章要方便不少。最吸引個人說實話就是標題,讀者都是被標題吸引了纔去選擇是否讀你的文章。咪蒙這一點真的厲害。數組

總共1013篇文章,直接讀取文件夾中的全部文件就好,markdown

import os
import re
files = os.listdir(r"E:\BaiduNetdiskDownload\咪蒙\咪蒙所有文章PDF")
for i in files:
  # 經過正則匹配標題中的日期
  mat = re.search(r"(\d{4}_\d{1,2}_\d{1,2} )", i)
  re_str = mat.groups()[0]
  # 替換日期和文件後綴名
  file_name = i.replace(re_str,'').replace('.pdf','')
  # 去掉圖片標題
  if file_name == "分享圖片":
      continue
  print(file_name)

  

在這裏插入圖片描述
更直觀的去看標題,能夠經過WorldCloud生成詞雲圖。這裏文章太多,生成全部標題的詞雲可能看不太清,因此只生成了近期部分標題。網絡

 

import numpy as np
from PIL import Image
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt

# 讀取全部文件的標題,存在txt文本中
with open('標題.txt', 'r', encoding='utf-8') as f:
  word = (f.read())
  f.close()

# 圖片模板和字體
image = np.array(Image.open('背景圖片.jpg'))
# 指定字體,不然漢字不顯示
font_path='yahei.ttf'

# 結巴分詞
wordlist_after_jieba = jieba.cut(word)
# 分詞結果
wl_space_split = " ".join(wordlist_after_jieba)
# 關鍵一步
my_wordcloud = WordCloud(scale=4, font_path=font_path,mask=image, background_color='white',
                       max_words=1000, max_font_size=55, random_state=24).generate(wl_space_split)
# 顯示生成的詞雲
plt.imshow(my_wordcloud)
plt.axis("off")
plt.show()
# 保存生成的圖片
my_wordcloud.to_file('result.jpg')

  

 

畢竟小編主要仍是java開發,Pyton實在是有點渣,爲了美觀用在線工具生成了詞雲,就僞裝是我生成的吧多線程

在這裏插入圖片描述


在這裏插入圖片描述

從上圖中看出來,真的是在標題上煞廢了苦心。標題只是讓用戶打開,只有內容才能真正的留住用戶。那究竟什麼內容這麼吸引人呢?echarts

由於拿到的文件格式是PDF文件,所以能夠經過Python的pdfminer3k庫進行操做。dom

安裝庫

pip3 install pdfminer3k

代碼以下

import sys
import importlib
import os
importlib.reload(sys)

from pdfminer.pdfparser import PDFParser, PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LTTextBoxHorizontal, LAParams
from pdfminer.pdfinterp import PDFTextExtractionNotAllowed


def readPDF(path, toPath):
   # 以二進制的形式打開PDF文件
   with open(path, "rb") as f:
       # 建立一個PDF解析器
       parser = PDFParser(f)
       # 建立PDF文檔
       pdfFile = PDFDocument()
       # 文檔放入解析器中
       parser.set_document(pdfFile)
       pdfFile.set_parser(parser)
       # 初始化密碼
       pdfFile.initialize()
       # 檢測文檔是否能夠轉換成txt
   if not pdfFile.is_extractable:
       raise PDFTextExtractionNotAllowed
   else:
       # 解析數據
       # 數據管理
       manager = PDFResourceManager()
       # 建立一個PDF設備對象
       laparams = LAParams()
       device = PDFPageAggregator(manager, laparams=laparams)
       # 解釋器對象
       interpreter = PDFPageInterpreter(manager, device)

       # 開始循環處理,每次處理一頁
       for page in pdfFile.get_pages():
           interpreter.process_page(page)
           layout = device.get_result()
           for x in layout:
               if(isinstance(x, LTTextBoxHorizontal)):
                   with open(toPath, "a") as f:
                       str = x.get_text()
                       # print(str)
                       f.write(str.encode("gbk", 'ignore').decode("gbk", "ignore")+"\n")
path = r"E:\BaiduNetdiskDownload\咪蒙\咪蒙所有文章PDF"

# 獲取文件下全部PDF文件數組
files = os.listdir(r"E:\BaiduNetdiskDownload\咪蒙\咪蒙所有文章PDF")
for i in files:
   # 拼接文件路徑
   content_url = path + '/' + i
   readPDF(content_url, 'content.txt')
   print(f"{content_url} 讀取完成")

 

所有文章大概300多萬字左右,這裏推薦使用多線程去操做。而後進行數據清洗,由於資料包裏有些不相關的推廣信息,以及文章的編輯、排版、配圖人員的署名、日期等信息。

而後經過分詞計算出熱點關鍵詞出現的次數。

import jieba
import csv

article = open('content.txt','r').read()
words = list(jieba.cut(article))
articleDict = {}
for w in set(words):
   if len(w)>1:
       articleDict[w] = words.count(w)
articlelist = sorted(articleDict.items(),key = lambda x:x[1], reverse = True)

#打開文件,追加a
out = open('mm_csv.csv','a', newline='')
#設定寫入模式
csv_write = csv.writer(out,dialect='excel')
for i in range(10):
   # 關鍵詞
   word = articlelist[i][0]
   # 出現次數
   num = articlelist[i][1]
   arr = [word, num]
   csv_write.writerow(arr)
print('已保存爲csv文件.')

  

 

在這裏插入圖片描述在這裏插入圖片描述
發現出現了不少社交關係中的稱呼詞。爲了更直觀的展現,能夠經過pyecharts進行柱狀圖顯示。
在這裏插入圖片描述在這裏插入圖片描述
文章中大部分從孩子、父母、男生、女生、閨蜜等話題展開。另外之因此朋友這個詞出如今前面,由於不少文章都是講述"朋友"的故事。

 

以前看過一篇文章,分析了咪蒙的微博(現已關閉),粉絲將近200W,其中女性粉絲佔據了85%。年齡段在23-28歲之間,這個年齡段的女生對理想中的生活比較嚮往,而咪蒙的文章就是說出了他們的心聲,文中狂噴渣男,直男。做爲理工男加程序員個人心裏是這樣子的。

在這裏插入圖片描述


最後根據高頻詞生成了一個詞雲圖,背景圖片用的是咪蒙的頭像。


在這裏插入圖片描述在這裏插入

寫在最後

翻了幾篇文章發現配圖很是的小清新,可能就是用來掩蓋雞湯的毒吧。《寒門狀元之死》在網上扒出了許多槽點,爲了人氣不惜歪曲事實,虛構場景。並且不少文章中出現頻繁出現不雅詞語。

在這裏插入圖片描述

 

引用網上的一句話 

一部分人討厭咪蒙,

是由於沒法忍受文明世界裏一個滿口髒話的公知,

是由於咱們受夠了她不良的蠱惑,

是由於咱們相信咱們關注的公衆號應該有底線和正確的三觀,

是由於咱們仍是一羣有良知有思考的年輕人。

比起這種大起大落,我更願意體會那些眇小的成就感。

好比,程序啓動一切正常,說服產品不改需求了,發現BUG就知道哪裏出了問題。

再好比,看完這篇文章的你能點個贊,點個關注。


關注公衆號,回覆「咪蒙」可獲取她的全部文章。回覆「獲取資源」更精彩

在這裏插入圖片描述

相關文章
相關標籤/搜索