Python爬取個人部落格,帶你製作高逼格的資料聚合雲圖

中興開發者社群發表於2017-11-13

點選上方“中興開發者社群”,關注我們

每天讀一篇一線開發者原創好文640?wx_fmt=png&wxfrom=5&wx_lazy=1

本文出自方誌朋的部落格

連結:http://blog.csdn.net/forezp/article/details/70198541


一時興起,想用Python爬爬自己的部落格,通過資料聚合,製作高逼格的雲圖(對詞彙出現頻率視覺上的展示),看看最近我到底寫了啥文章。


一、直接上幾張我的部落格資料的雲圖


1.1 爬取文章的標題的聚合


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

640?wx_fmt=jpeg

640?wx_fmt=jpeg


1.2 爬取文章的摘要的聚合

640?wx_fmt=jpeg

640?wx_fmt=jpeg


1.3 爬取文章的標題+摘要的聚合


640?wx_fmt=jpeg

640?wx_fmt=jpeg


我最近寫了SpringCloud系列教程,還有一些微服務架構方面,從雲圖上看,基本吻合。你若不信,可以進我的部落格看看,資料還是非常準確的


二、技術棧


  • 開發工具: pycharm

  • 爬蟲技術:bs64、requsts、jieba

  • 分析工具:wordArt


三、爬蟲構架設計


640?wx_fmt=png


整個爬蟲架構非常簡單:


  • 爬取我的部落格:http://blog.csdn.net/forezp

  • 獲取資料

  • 將資料用“結巴”庫,分詞。

  • 將得到的資料在在artword上製作雲圖。

  • 將製作出來的雲圖展示給使用者。


四、具體實現


先根據部落格地址爬去資料:

url = 'http://blog.csdn.net/forezp'   titles=set()   

def download(url):   
    if url is None:   
        return None   
    try:   
        response = requests.get(url, headers={   
            'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36',   
        })   
        if (response.status_code == 200):   
            return response.content   
        return None   
    except:   
        return None

解析標題

def parse_title(html):   
    if html is None:   
        return None   
    soup = BeautifulSoup(html, "html.parser")   
    links = soup.find_all('a', href=re.compile(r'/forezp/article/details'))   
    for link in links:   

        titles.add(link.get_text())

解析摘要:

def parse_descrtion(html):   
    if html is None:   
        return None   
    soup=BeautifulSoup(html, "html.parser")   
    disciptions=soup.find_all('div',attrs={'class': 'article_description'})   
    for link in disciptions:   

        titles.add(link.get_text())

用“結巴”分詞,”激8”分詞怎麼用,看這裡:https://github.com/fxsjy/jieba/

def jiebaSet():   
    strs=''   
    if titles.__len__()==0:   
        return   
    for item in titles:   
        strs=strs+item;   

    tags = jieba.analyse.extract_tags(strs, topK=100, withWeight=True)   
    for item in tags:   
        print(item[0] + '\t' + str(int(item[1] * 1000)))

因為資料比較少,所以我直接列印在控制檯,並把它複製下來,更好的方法是存在MongoDB中。


製作雲圖: 

用 artword線上工具,地址:https://wordart.com


首先: 


匯入從控制檯複製過來的資料:


640?wx_fmt=png


令人尷尬的是,這個網站在繪製圖的時候不支援中文,需要你從c:/windows/fonts下選擇一個支援中文的字型,mac 使用者從windows拷下資料夾也可以,或者在網上下。


640?wx_fmt=png


然後點選Visulize就可以生成高逼格的雲圖了。講解完畢,有什麼需要改進的請大家留言。


原始碼下載

https://github.com/forezp/ZhihuSpiderMan/tree/master/blogspider


640?wx_fmt=jpeg


相關文章