利用簡書首頁文章標題數據生成詞雲

1.詞雲圖

詞雲圖,也叫文字雲,是對文本中出現頻率較高的「關鍵詞」予以視覺化的展現,詞雲圖過濾掉大量的低頻低質的文本信息,使得瀏覽者只要一眼掃過文本就可領略文本的主旨。

  • 先看幾個詞雲圖

簡書籤約作者標籤詞雲

全國政協常委會工作報告詞雲圖

2.推薦幾個不錯的詞雲圖工具

  • Tagul

Tagul雲可以自定義字體、詞雲的形狀(有愛心、BUS、雪人、人像、UFO等),顏色等,做出來的詞雲圖很酷炫,為網站訪問者提供良好的用戶體驗。用戶可以在網站做好詞雲圖,然後印在衣服、杯子、滑鼠墊等地方,自己設計身邊的物件,感覺很有成就感,很實用的網站。

  • 圖悅

這款國內的在線詞頻分析工具,在長文本自動分詞並製作詞雲方面還是很出眾的,而且也容易上手,還可以自定義定製圖形模板:標準、微信、地圖等,切換自如,用起來體驗很不錯。

  • BDP個人版

這是一款數據可視化工具,除了詞雲,還有很多其他酷炫的圖表,如GIS地圖、漏斗圖、瀑布圖、桑基圖等,來了解它們的詞雲。工具很容易上手,直接把詞語這個數據拉到維度欄,再選擇詞雲就瞬間呈現詞雲圖表,BDP會自動算好詞頻,你可以設置顏色,快速實現詞雲可視化,特別簡單。

  • Python的擴展包wordcloud也可構建詞雲。
    • 安裝命令

#安裝詞雲npip install wordcloudnn#安裝jieba分詞npip install jieban

1、引入模塊

from wordcloud import WordCloudnimport matplotlib.pyplot as pltn

2、實例化一個詞雲

wc = WordCloud()n

3、導入文本

text = open(r"222.txt",encoding=utf-8).read()n

4、生成詞雲

wc.generate(text)n

5、顯示詞雲

plt.imshow(wc)

#導入python畫圖的庫,詞雲生成庫和jieba的分詞庫nimport matplotlib.pyplot as pltnfrom wordcloud import WordCloudnimport jiebann#讀取txt格式的文本內容ntext_from_file_with_apath = open(JsIndex.txt).read()nn#使用jieba進行分詞,並對分詞的結果以空格隔開nwordlist_after_jieba = jieba.cut(text_from_file_with_apath, cut_all = True)nwl_space_split = " ".join(wordlist_after_jieba)nn#對分詞後的文本生成詞雲nmy_wordcloud = WordCloud().generate(wl_space_split)nn#用pyplot展示詞雲圖。nplt.imshow(my_wordcloud)nplt.axis("off")nplt.show()n

入門可以參考博客python詞雲 wordcloud 入門,安裝的時候建議使用依賴包安裝,我用命令安裝了幾次一直超時失敗。

3.爬取數據,製作詞雲圖

1.爬取簡書首頁推薦文章標題

  • 分析網頁結構通過Xpath篩選我們想要的數據有兩種方法

通過谷歌商店的Xpath工具分析結構得到我們想要的數據

直接複製title的xpath,不過我們只能得到這一條數據,所以還要修改

  • 編寫代碼

#-*- coding:utf-8 -*-nn#creater 簡書-_知幾 2017.8.26nnimport urllib,urllib2,renfrom lxml import etreennclass CrawlJs:n #定義函數,爬取對應的數據n def getArticle(self,url):n print █████████████◣開始爬取數據n my_headers = {n User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.104 Safari/537.36,n }n request = urllib2.Request(url,headers=my_headers)n content = urllib2.urlopen(request).read()n return contentnn #定義函數,篩選和保存爬取到的數據n def save(self,content):n xml = etree.HTML(content)n datas = xml.xpath(//div[@class="content"]/a/text())n print datasn for data in datas:n print datan with open(JsIndex.txt,a+) as f:n f.write(data.encode(utf-8)+ n)n print █████████████◣爬取完成!nn#定義主程序介面nif __name__ == __main__:n url = http://www.jianshu.com/n js = CrawlJs()n content = js.getArticle(url)n js.save(content)n

得到我們的數據

2.製作詞雲圖

  • 工具 我使用的是TAGUL 一款在線詞雲製作工具,簡單易上手,缺點只能分詞英文,需要導入中文字體。

操作:

  • Import words , 可以直接粘貼導入文本數據,或者以web url的方式導入。文本數據包括關鍵詞和size。
  • 選擇形狀shapes -- 也可自定義形狀圖片

    TAGUL提供了一些模板圖形,左邊是分類主題。
  • 分詞技術

    推薦兩個分詞工具,一個是在線分詞工具 基於深度學習的中文在線抽詞-PullWord,另一個是結巴分詞(jieba)。

簡書首頁推薦文章標題詞雲圖

作者:_知幾 Python愛好者社區專欄作者,請勿轉載,謝謝。

簡書主頁:jianshu.com/u/9dad6621d

博客專欄:_知幾的博客專欄

配套視頻教程:Python3爬蟲三大案例實戰分享:貓眼電影、今日頭條街拍美圖、淘寶美食 Python3爬蟲三大案例實戰分享

公眾號:Python愛好者社區(微信ID:python_shequ),關注,查看更多連載內容。

推薦閱讀:

學習筆記三:改善Python程序的91個建議
利用 Python 打造反向 TCP 後門
Python從零開始系列連載(13)——Python程序的基本控制流程(上)
用印象筆記的Python SDK介面開發個自用小工具

TAG:Python | Python库 | Python教程 |