1. 程式人生 > 實用技巧 >iPhone12和華為mate40哪個好?看看網友們怎麼說

iPhone12和華為mate40哪個好?看看網友們怎麼說

本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯絡我們以作處理

以下文章來源於菜鳥學Python資料分析 ,作者小dull鳥

前言

如今,關於iPhone12和華為mate40哪個好的爭論不斷,新浪科技釋出一條關於“iPhone12和華為Mate40你選誰?”的投票,結果如下:

通過上圖可以看出,選華為的佔56%,選蘋果的佔23.74%,還有11%的人都不選、4%的人看到實物再選、5%的人都想要

為了進一步挖掘資料,我爬了該條微博的評論資料,並製作詞雲圖,看看大家都在說什麼

具體步驟如下:

1.分析微博評論資料介面

在微博移動端開啟該條微博(因為移動端資料相對好爬),抓包獲取資料介面:

返回的資料介面為json格式

再來看看url規律,第1、2、3頁評論資料的url分別為:

1.https://m.weibo.cn/comments/hotflow?id=4559868490418275&mid=4559868490418275&max_id_type=0
2.https://m.weibo.cn/comments/hotflow?id=4559868490418275&mid=4559868490418275&max_id=140496174237721&max_id_type=0
3.https://m.weibo.cn/comments/hotflow?id=4559868490418275&mid=4559868490418275&max_id=139259223284570&max_id_type=0

我們可以發現,除了第一頁格式唯一,其他的都相對固定,且id和mid的引數值固定,變化的為max_id引數

經過分析,當頁的max_id引數在上一頁的返回資料中,例如,第二頁的max_id在第一頁的返回資料中:

2.寫爬蟲程式碼

這裡要注意一點,爬蟲中要加入登入後的cookie值,否則只能返回第一頁資料,具體程式碼如下:

importrequests
importjson
importre
importpandasaspd
url='https://m.weibo.cn/comments/hotflow?id=4559868490418275&mid=4559868490418275&max_id_type=0'
headers={'User-Agent':'User-Agent:Mozilla/5.0(WindowsNT6.1;Win64;x64;rv:78.0)Gecko/20100101Firefox/78.0'}
cookie={'Cookie':'換成自己的cookie'}
comments=[]
foriinrange(50):
response=requests.get(url,headers=headers,cookies=cookie)
results=json.loads(response.text)
max_id=results['data']['max_id']
datas=results['data']['data']
patter=re.compile(r'(.*?)<',re.S)
fordataindatas:
if'<'indata['text']:
text=re.findall(patter,data['text'])[0]
else:
text=data['text']
comments.append(text)
url='https://m.weibo.cn/comments/hotflow?id=4559868490418275&mid=4559868490418275&max_id={0}&max_id_type=0'.format(max_id)

結果如下:

3.將評論資料連成字元

content=''.join(comments)

4.使用jieba分詞,去除單個字元和換行符

segment=[]
segs=jieba.cut(content)#使用jieba分詞
forseginsegs:
iflen(seg)>1andseg!='\r\n':
segment.append(seg)

5.對文字去噪

words_df=pd.DataFrame({'segment':segment})
words_df.head()
stopwords=pd.read_csv("stopword.txt",index_col=False,
quoting=3,sep='\t',names=['stopword'],encoding="utf8")
words_df=words_df[~words_df.segment.isin(stopwords.stopword)]

這一步主要是把沒用的詞語和詞語去除掉,‘stop.txt’獲取方式在文末

6.對剩下的詞語按組計算個數,並按個數大小進行排序

words_stat=words_df.groupby('segment').agg(count=pd.NamedAgg(column='segment',aggfunc='size'))
words_stat=words_stat.reset_index().sort_values(by="count",ascending=False)

7.自定義詞雲背景,設定字型樣式

bimg=imread('mangguo.jpg')
wordcloud=WordCloud(background_color="white",mask=bimg,font_path='AdobeHeitiStd-Regular.otf')
wordcloud=wordcloud.fit_words(dict(words_stat.head(990000).itertuples(index=False)))

這一步若出錯,請把font換成電腦中已有的字型

8.從背景圖片生成顏色值

bimgColors=ImageColorGenerator(bimg)
plt.axis("off")
plt.imshow(wordcloud.recolor(color_func=bimgColors))

9.生成詞雲圖

wordcloud.to_file("iphoneVShuawei.png")

10.成果圖

從詞雲圖中可以看出,大家還是比較支援華為的,同時還有不少人表示都太貴、買不起。