日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python 爬取生成中文词云以爬取知乎用户属性为例

發布時間:2025/3/21 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python 爬取生成中文词云以爬取知乎用户属性为例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

代碼如下:

# -*- coding:utf-8 -*-import requests import pandas as pd import timeimport matplotlib.pyplot as plt from wordcloud import WordCloud import jiebaheader={'authorization':'Bearer 2|1:0|10:1515395885|4:z_c0|92:Mi4xOFQ0UEF3QUFBQUFBRU1LMElhcTVDeVlBQUFCZ0FsVk5MV2xBV3dDLVZPdEhYeGxaclFVeERfMjZvd3lOXzYzd1FB|39008996817966440159b3a15b5f921f7a22b5125eb5a88b37f58f3f459ff7f8','User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36','X-UDID':'ABDCtCGquQuPTtEPSOg35iwD-FA20zJg2ps=', }user_data = [] def get_user_data(page):for i in range(page):url = 'https://www.zhihu.com/api/v4/members/excited-vczh/followees?include=data%5B*%5D.answer_count%2Carticles_count%2Cgender%2Cfollower_count%2Cis_followed%2Cis_following%2Cbadge%5B%3F(type%3Dbest_answerer)%5D.topics&offset={}&limit=20'.format(i*20) #response = requests.get(url, headers=header).textresponse = requests.get(url, headers=header).json()['data']#['data'] 只有JSON格式中選擇data節點user_data.extend(response)print('正在爬取%s頁' % str(i+1))time.sleep(1)if __name__=='__main__':get_user_data(10)#pandas 的函數 from_dict()可以直接將一個response變成一個對象#df = pd.DataFrame.from_dict(user_data)#df.to_csv('D:/PythonWorkSpace/TestData/zhihu/user2.csv')df = pd.DataFrame.from_dict(user_data).get('headline')df.to_csv('D:/PythonWorkSpace/TestData/zhihu/headline.txt')text_from_file_with_apath = open('D:/PythonWorkSpace/TestData/zhihu/headline.txt').read()wordlist_after_jieba = jieba.cut(text_from_file_with_apath, cut_all=True)wl_space_split = " ".join(wordlist_after_jieba)my_wordcloud = WordCloud().generate(wl_space_split)plt.imshow(my_wordcloud)plt.axis("off")plt.show()

需要安裝準備的庫:

pip install?matplotlib
pip install jieba
pip install wordcloud(發現這方法安裝不成功)

換種安裝方式到?https://github.com/amueller/word_cloud?這里下載庫文件,解壓,然后進入到解壓后的文件,按住shift+鼠標右鍵?打開命令窗口運行一下命令:

python setup.py install

?然后同樣報錯

?然后我又換了一張安裝方式:
到?http://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud?頁面下載所需的wordcloud模塊的whl文件,下載后進入存儲該文件的路徑,按照方法一,執行“pip install wordcloud-1.3.3-cp36-cp36m-win_amd64.whl”,這樣就會安裝成功。

?

然后生成詞云的代碼如下:

text_from_file_with_apath = open('D:\Python\zhihu\headline.txt','r',encoding='utf-8').read() wordlist_after_jieba = jieba.cut(text_from_file_with_apath, cut_all=True) wl_space_split = " ".join(wordlist_after_jieba)my_wordcloud = WordCloud().generate(wl_space_split)plt.imshow(my_wordcloud) plt.axis("off") plt.show()

但是發現不顯示中文,這可就頭疼了。
顯示的是一些大大小小的彩色框框。這是因為,我們使用的wordcloud.py中,FONT_PATH的默認設置不識別中文。
仔細研究之后做了改進,終于可以正常顯示中文了

text_from_file_with_apath = open('D:\Python\zhihu\headline.txt','r',encoding='utf-8').read() wordlist_after_jieba = jieba.cut(text_from_file_with_apath, cut_all=True) wl_space_split = " ".join(wordlist_after_jieba) #FONT_PATH = os.environ.get("FONT_PATH", os.path.join(os.path.dirname(__file__), "simkai.ttf")) cloud = WordCloud(#設置字體,不指定就會出現亂碼font_path="simkai.ttf",#設置背景色background_color='white',#允許最大詞匯max_words=9000,#詞云形狀#mask=color_mask)#.generate(wl_space_split) ## 產生詞云 word_cloud = cloud.generate(wl_space_split) word_cloud.to_file('D:\Python\zhihu\headline.jpg')#將圖片保存到指定文件中 #直接顯示圖片,并且可編輯 # plt.imshow(word_cloud) # plt.axis("off") # plt.show()

  ?

?

坑:

Python讀取文件時經常會遇到這樣的錯誤:python3.4 UnicodeDecodeError: 'gbk' codec can't decode byte 0xff in position 0: illegal multibyte sequence

import codecs,sys
?f = codecs.open("***.txt","r","utf-8")
指明打開文件的編碼方式就可以消除錯誤了

轉載于:https://www.cnblogs.com/PeterZhang1520389703/p/8244633.html

總結

以上是生活随笔為你收集整理的Python 爬取生成中文词云以爬取知乎用户属性为例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。