python用代码庆祝国庆节 (python国庆假期)

大家好,我是志斌~

因为疫情的影响,很多高校开学后都选择了封校,从而来防止疫情在学校里出现,但是马上国庆了,学校也因时制宜改变了防疫方式,比如请假可以申请离校外出。

就让志斌用Python来带大家看看微博上话题热度第四的《全国统一国庆节请假的理由》的网友们是怎么请假的,并且那个理由是最通用的~

python国庆节,python用代码庆祝国庆节

01

数据采集

我们是从微博移动端来进行数据采集的。我们按F12,打开开发者模式,对网页进行观察

python国庆节,python用代码庆祝国庆节

我们发现数据存储的网页是一个hotflow开头的页面,它的数据存储的方式是Ajax,那我们就可以知道请求的页面和提取数据的方式了。

在上面,我们已经找到数据存储的网页和方式,那么只需要找到页面之间的联系,构造好循环,就可以批量开始爬取啦~

接下来对不同页面之间的URL进行观察

python国庆节,python用代码庆祝国庆节

它们URL里面的id和mid是固定不变的,但是max_id是变化的,然后我又在页面里面发现了max_id值的规律,每一页的max_id的值都在上一页中存储着。

python国庆节,python用代码庆祝国庆节

但是这样还不能够全部都访问,具体的原因和改进措施,这里因为篇幅,志斌就不介绍了,有兴趣的读者可以看看这两篇文章,有详细解释

数据采集的核心代码:

import requests import re import time import csv for page in range( 1 , 10000 ): if page == 1 :params = (( 'id' , '4679186482727431' ),( 'mid' , '4686092090212455' ),( 'max_id_type' , '0' ),) response = requests.get( 'https://m.weibo.cn/comments/hotflow' , headers=headers, params=params) a = response.json()[ 'data' ][ 'max_id' ]b = response.json()[ 'data' ][ 'max_id_type' ] for i in response.json()[ 'data' ][ 'data' ]:pinglunshijian = i[ 'created_at' ]ri = pinglunshijian.split()[ 2 ]shi = pinglunshijian.split()[ 3 ].split( ':' )[ 0 ] dianzanshu = i[ 'like_count' ]neirong = re.sub( r'<[^>]*>' , '' , i[ 'text' ])id = i[ 'user' ][ 'id' ]yonghumingcheng = i[ 'user' ][ 'screen_name' ] with open( '请假.csv' , 'a' ,newline= '' ) as f:writer = csv.writer(f)writer.writerow([yonghumingcheng,dianzanshu,ri,shi]) with open( r'请假.txt' , 'a' , encoding= 'utf-8' ) as f:f.write( f' {neirong} \n')

02

可视化展示

我们此次一共获取了6216条数据,对这些数据进行可视化展示。

01

评论点赞top5用户

我们先来看看那些用户的评论最受大家认同。

python国庆节,python用代码庆祝国庆节

这位叫顾狸狸的网友的评论点赞数是最高的,远超后几名,让我们来看看她的评论是什么,竟能让大家这么认同~

python国庆节,python用代码庆祝国庆节

这理由确实可哇!而且很有文艺范,不像我只会用亲戚朋友结婚来当理由~

02

评论词云图

python国庆节,python用代码庆祝国庆节

我们发现 结婚、姐姐、婚礼这三个词比较多,结合从微博上看到的评论,看来大家都是一样用参加姐姐婚礼请假回家的理由最多~

python国庆节,python用代码庆祝国庆节

图片来源于微博~

词云图代码:

with open( "请假.txt" ,encoding= 'utf-8' ) as f:job_title_1 = f.read()contents_cut_job_title = jieba.cut(job_title_1)contents_list_job_title = " " .join(contents_cut_job_title)wc = WordCloud(stopwords=STOPWORDS.add( "一个" ), collocations= False ,background_color= "white" ,font_path= r"K:\苏新诗柳楷简.ttf" ,width= 400 , height= 300 , random_state= 42 ,mask=imread( 'xin.jpg' , pilmode= "RGB" ))wc.generate(contents_list_job_title)wc.to_file( "推荐语.png" )

03

小结

1. 你的请假理由是什么呢?欢迎大家来找志斌分享哟~

2. 虽然国庆可以外出,但是大家还是要做好防护哟~

3. 本文仅作学习参考,不做它用。

小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。