昨天在看頭條的時候發(fā)現(xiàn)白热,結(jié)婚登記人數(shù)已連續(xù)7年下降,去年創(chuàng)17年來新低
我都驚呆了
細(xì)看發(fā)現(xiàn)2020年粗卜,官方統(tǒng)計(jì)的結(jié)婚登記人數(shù)共計(jì)814.33萬對屋确,較2019年減少了113萬對。
這也是自2013年達(dá)到1346.93萬對后续扔,連續(xù)7年下降攻臀。2020年814.33萬對的結(jié)婚登記人數(shù),也創(chuàng)下了自2003年(國家統(tǒng)計(jì)局官網(wǎng)數(shù)據(jù):811.4萬對)以來纱昧,近17年中的新低刨啸。
我們觀察評論發(fā)現(xiàn),大家對結(jié)婚率低這種現(xiàn)象都有自己的看法
我們今天就用爬蟲來獲取這些評論數(shù)據(jù)识脆,看看除了看到的這些原因還有哪些是不為我們所知的
需求分析
我們要獲取的數(shù)據(jù)有當(dāng)前文章下的評論者的
用戶名稱设联、
評論內(nèi)容、
帖子回復(fù)數(shù)灼捂、
評論點(diǎn)贊數(shù)离例、
和評論時間等
網(wǎng)頁分析
首先我們F12打開瀏覽器開發(fā)者模式如下:
找到如上圖評論所在位置以及網(wǎng)頁請求的真實(shí)url
觀察url特點(diǎn),count=20代表每頁十條評論數(shù)據(jù)悉稠,offset=0宫蛆、20、40控制翻頁偎球,其余參數(shù)不發(fā)生變化
https://www.toutiao.com/article/v2/tab_comments/?aid=24&app_name=toutiao_web&offset=0&count=20&group_id=7032951744313164295&item_id=7032951744313164295
https://www.toutiao.com/article/v2/tab_comments/?aid=24&app_name=toutiao_web&offset=20&count=20&group_id=7032951744313164295&item_id=7032951744313164295
https://www.toutiao.com/article/v2/tab_comments/?aid=24&app_name=toutiao_web&offset=40&count=20&group_id=7032951744313164295&item_id=7032951744313164295
https://www.toutiao.com/article/v2/tab_comments/?aid=24&app_name=toutiao_web&offset=60&count=20&group_id=7032951744313164295&item_id=7032951744313164295
據(jù)此我們可以構(gòu)造出多頁請求的請求連接
url?=f'https://www.toutiao.com/article/v2/tab_comments/?aid=24&app_name=toutiao_web&offset={(page-1)*20}&count=20&group_id=7032951744313164295&item_id=7032951744313164295'
發(fā)送請求
我們使用剛才找到的url先來獲取單頁請求信息
url?=f'https://www.toutiao.com/article/v2/tab_comments/?aid=24&app_name=toutiao_web&offset={(page-1)*20}&count=20&group_id=7032951744313164295&item_id=7032951744313164295'
headers?=?{
'cookie':'xxxxxxxxxx',
'referer':'xxxxxxxxxx',
'user-agent':'xxxxxxxxxx'
}
resp?=?requests.get(url,?headers?=?headers)
結(jié)果如下:
可以看到這是一個json格式的數(shù)據(jù)集洒扎,我們要獲取的信息都在data列表的comment中。
分析到這里了衰絮,接下來就很簡單了袍冷。
foriteminjson_data:
#?用戶名稱
user?=?item['comment']['user_name']
#?評論內(nèi)容
text?=?item['comment']['text']
#?貼子回復(fù)數(shù)
reply?=?item['comment']['reply_count']
#?評論時間
times?=?item['comment']['create_time']
rls_time?=?time.strftime('%Y-%m-%d?%H:%M',?time.localtime(times))
#?評論點(diǎn)贊數(shù)
stars?=?item['comment']['digg_count']
ic(user,?stars,?rls_time,?reply,?text)
'''
ic|?user:?'快樂餅干Zp'
stars:?1741
rls_time:?'2021-11-21?17:42'
reply:?239
text:?'別再說是疫情惹的禍'
ic|?user:?'桐廬夜讀'
stars:?253
rls_time:?'2021-11-21?17:47'
reply:?43
text:?'連續(xù)七年結(jié)婚率下降,不結(jié)婚何來生育率'
ic|?user:?'Lily王之涵'
stars:?148
rls_time:?'2021-11-21?17:50'
reply:?59
text:?'2020年結(jié)婚的新人有我一個[可愛]'
ic|?user:?'小濤仔的生活視頻'
stars:?206
rls_time:?'2021-11-21?17:52'
reply:?43
text:?'農(nóng)村男光棍太多猫牡,結(jié)不起婚胡诗,也沒有女的,我村有三十多個光棍,卻沒有一個未婚女的煌恢,真實(shí)的'
ic|?user:?'番茄1543353620246856'
stars:?197
rls_time:?'2021-11-21?18:48'
reply:?11
text:?('現(xiàn)在有多少人敢結(jié)婚啊骇陈,萬一遇到個渣渣,聊離婚都是麻煩瑰抵。
'
'我朋友你雌,遇到個渣男,各種上訴二汛,終于男的答應(yīng)離婚了婿崭,從廣東到四川的車費(fèi)都是我朋友給的,不給就不來肴颊。
'
'給了氓栈,來先申請離婚。結(jié)果中間遇到疫情婿着,拖著了授瘦。錯過了。又要重新來過竟宋。然后那男的就嫌麻煩提完,不來了。丘侠。氯葬。
'
'從13年結(jié)了婚生了孩子,這男人就沒管過婉陷。還打我朋友。把我朋友打跑了官研,我朋友自己帶孩子秽澳。這男人口口聲聲還說跟孩子講,他爸爸死了戏羽。')
'''
多頁獲取
先獲取2000條數(shù)據(jù)作為測試使用
forpageinrange(1,200+1):
url?=f'https://www.toutiao.com/article/v2/tab_comments/?aid=24&app_name=toutiao_web&offset={(page-1)*20}&count=20&group_id=7032951744313164295&item_id=7032951744313164295'
數(shù)據(jù)保存
接下來我們使用openpyxl將數(shù)據(jù)保存在excel中担神。
共計(jì)1500+條
#?創(chuàng)建workbook
ws?=?op.Workbook()
#?創(chuàng)建worksheet
wb?=?ws.create_sheet(index=0)
#?創(chuàng)建表頭
wb.cell(row=1,?column=1,?value='用戶名稱')
wb.cell(row=1,?column=2,?value='評論點(diǎn)贊')
wb.cell(row=1,?column=3,?value='評論時間')
wb.cell(row=1,?column=4,?value='貼子回復(fù)')
wb.cell(row=1,?column=5,?value='評論內(nèi)容')
#?保存數(shù)據(jù)
ws.save('結(jié)婚率.xlsx')
print('數(shù)據(jù)保存完畢!')
數(shù)據(jù)預(yù)處理
我們首先使用熊貓讀取excel始花。然后使用
pandas去除重復(fù)數(shù)據(jù)和缺失值妄讯。
#?讀取數(shù)據(jù)
rcv_data?=?pd.read_excel('./結(jié)婚率.xlsx')
#?刪除重復(fù)記錄
rcv_data?=?rcv_data.drop_duplicates()
#?刪除缺失值
rcv_data?=?rcv_data.dropna()
#?抽樣展示5條數(shù)據(jù)
print(rcv_data.sample(5))
'''
用戶名稱??評論點(diǎn)贊??????????????評論時間??貼子回復(fù)???????????????????????????????????????????????評論內(nèi)容
943 ????用戶4947984566248 ??? 1? 2021-11-21 17:50?????0????????????????????????????????????合伙過日子不香嗎,結(jié)什么婚呢酷宵?
635??????????成都紳士男士西宸天街?????1??2021-11-21?19:00?????0??????????????????????????????????????????????這很正常啊
1594??黑矮子ReFuelYourlife?????0??2021-11-21?23:15?????0??互聯(lián)網(wǎng)這個東西是好東西亥贸,也是壞東西,八幾年浇垦,九幾年攀比的人沒那么多炕置,因?yàn)楹枚鄶?shù)據(jù)他們都不知道...
12??????????????????等名等???188??2021-11-21?19:05????11???????????????????????好事,,房價再高一點(diǎn)朴摊,加油?默垄,,[捂臉][捂臉][捂臉]
1854????????????kevin師傅?????0??2021-11-21?21:17?????0???????????????????????????????????????結(jié)婚結(jié)不起?離婚也離不起
'''
詞云展示
使用結(jié)巴分詞
最后使用stylecloud繪制漂亮的詞云圖展示
#?詞云展示
defvisual_ciyun():
pic?='./img.jpg'
gen_stylecloud(text=result,
icon_name='fas?fa-feather-alt',
font_path='msyh.ttc',
background_color='white',
output_name=pic,
custom_stopwords=stop_words
)
print('詞云圖繪制成功甚纲!')
對詞云有興趣的小伙伴可以參考
如何使用python實(shí)現(xiàn)一個優(yōu)雅的詞云口锭?(超詳細(xì))
詞頻展示
文章評論出現(xiàn)頻率最高的前十個詞分別如下:
defvisual_cipin():
#?詞頻設(shè)置
all_words?=?[wordforwordinresult.split('?')iflen(word)?>1andwordnotinstop_words]
wordcount?=?Counter(all_words).most_common(10)
x1_data,?y1_data?=?list(zip(*wordcount))
'''
('結(jié)婚',?'離婚',?'不想',?'離婚率',?'孩子',?'房價',?'單身',?'彩禮',?'房子',?'人口')
(805,?211,?210,?113,?98,?98,?79,?73,?63,?63)
'''
接下來我們使用可視化來直觀的展示如下:
柱狀圖
餅圖
氣泡圖
點(diǎn)贊最多&&回復(fù)最多
我們通過如下函數(shù)找到點(diǎn)贊最多的評論和回復(fù)最多的評論
defdatas_anay():
max_stars?=?rcv_data[rcv_data['評論點(diǎn)贊']?==?rcv_data['評論點(diǎn)贊'].max()]
ic(max_stars)
max_reply?=?rcv_data[rcv_data['貼子回復(fù)']?==?rcv_data['貼子回復(fù)'].max()]
ic(max_reply)
'''
用戶名稱??評論點(diǎn)贊??????????????評論時間??貼子回復(fù)???????評論內(nèi)容
0??快樂餅干Zp??1615??2021-11-21?17:42???216??別再說是疫情惹的禍
用戶名稱??評論點(diǎn)贊??????????????評論時間??貼子回復(fù)???????????????????????????????????????????????評論內(nèi)容
27 ?你們城里人真會玩111 ? 182? 2021-11-21 17:58 ? 285 ?現(xiàn)在養(yǎng)女兒比養(yǎng)殖什么都劃算。投資小風(fēng)險小賺錢多介杆。我三個姐那時候收的彩禮錢是5000/2000...
'''
點(diǎn)贊數(shù)最多的網(wǎng)友看法
獲得點(diǎn)贊最多的是一名為快樂餅干Zp的用戶評價鹃操,他的評論點(diǎn)贊數(shù)為1970
別再說是疫情惹的禍
再來看看用戶評論點(diǎn)贊排行榜:
?回復(fù)數(shù)最多的網(wǎng)友看法
獲得回復(fù)最多的是一個名為你們城里人真會玩111的用戶評價,他的評論回復(fù)數(shù)為285这溅,看來大貨丟這條評論異議很大啊?
現(xiàn)在養(yǎng)女兒比養(yǎng)殖什么都劃算组民。投資小風(fēng)險小賺錢多。我三個姐那時候收的彩禮錢是5000/20000/20000悲靴。彩禮錢錢是用來買家電家具摩托車再送過去臭胜。要彩禮錢就是男方出錢女方挑家電。少有貪污聘金的癞尚,被人知道貪污會背后說他們賣女兒耸三。女方富裕的還會倒貼錢。放在現(xiàn)在人口買賣的形式浇揩,有三個姐輕松入手百萬
再來看看用戶評論回復(fù)排行榜:
評論點(diǎn)贊時間
從下圖我們可以直觀的看到大家點(diǎn)贊的時間大多分布在
17:00-19:00
大家可以著這個時間點(diǎn)多發(fā)點(diǎn)評論可以后去到更多的贊哦
評論回復(fù)時間
想要獲得更多回復(fù)可以選擇在17:00-18:00之間去對文章進(jìn)行評論
情感分析
我們以點(diǎn)贊最多評論為例分析觀眾對知乎的一些看法進(jìn)行簡單分析
我們是使用的庫是SnowNLP
SnowNLP是一個基于Python的情感分析工具庫仪壮,可以進(jìn)行中文分詞、詞性標(biāo)注胳徽、情感分析积锅、文本分類、文本關(guān)鍵詞提取等养盗。
SnowNLP的情感值取值范圍為0到1之間缚陷,值越大,說明情感傾向越積極往核。
#?情感分析
defanay_data():
all_words?=?[wordforwordinresult.split('?')iflen(word)?>1andwordnotinstop_words]
positibe?=?negtive?=?middle?=0
foriinall_words:
pingfen?=?SnowNLP(i)
ifpingfen.sentiments?>0.7:
positibe?+=1
elifpingfen.sentiments?<0.3:
negtive?+=1
else:
middle?+=1
print(positibe,?negtive,?middle)
'''
2499?919?7662
'''
從圖中箫爷,我們可以看到,大家的評論積極態(tài)度的有22%聂儒,中等態(tài)度的占69%虎锚,消極態(tài)度只占8%,看來大家的心態(tài)還是很平和的衩婚。
情感分析樹狀圖