刘启麟---第一次个人编程作业
博客班级 | 2018级计算机和综合实验班 |
---|---|
作业要求 | 第一次个人编程作业 |
作业目标 | 对数据进行采集、处理以及分析 |
作业源代码 | 《在一起》词云图 |
学号 | 211814393 |
写在最前面:🏮元宵节快乐🏮本次代码总行:86 行(不算html部分),编码总时间:50+ h(还是自己太🥬了),因为石家庄疫情所以过年就在广东老家过年,一直帮忙到23号到家才开始写这次编程作业。刚开始看到作业内容的时候感觉🧠嗡了一下(怎么一下就这么难了),有些手足无措。班里用Mac OS系统编程的估计也没几个人,有些问题只能自己查论坛去研究解决,加上复习之前学习的爬虫和前端知识也用去了很多时间,熬了三天夜虽然做完了作业但还是有很多不太懂,等之后慢慢理解消化叭。
项目部分 | 总耗时 |
---|---|
总天数 | 4 days |
整理思路 | 10 min |
评论爬取 | 8+ h |
jieba分词 | 10+ h |
统计词频 | 8+ h |
词云图以及网页显示 | 10+ h |
git库 | 10+ h |
下面聊一下自己做这次作业的心路历程💔(参考网址在文末)
- git操作
本次作业需要新建两个分支,分别用来做数据处理和数据展示。在上传文件的时候需要先切换到对应分支来上传,再到main
分支进行合并上传。一开始我为了之后做作业代码放的清楚,就在克隆远程仓库以后新建了两个文件夹,当在文件夹内放入准备上传的文件时,git status
时会多出现一个.DS_Store
文件,通过查阅博客得知这是由苹果公司的 Mac OS X 操作系统所创造的隐藏文件,相当于 Windows 下的desktop.ini
。这个文件会影响git checkout
和git push
操作,这个问题困扰了我好半天(我最开始一直以为是自己的操作哪里出了错),后来我在网上找到了解决方法。同时我还发现,如果不新建文件夹,就不会出现这个隐藏文件(我现在也不知道为什么,等开学以后多跟老师交流交流),这个问题让我反复重新建库建了好多次😭,git
操作也越发熟练(笨鸟多犯错),所以这次库中就没有建单独文件夹,所有文件放在了一起(分支肯定放好啦😊)。
PS:不知道是不是 Mac 的问题,在分支方面它不像 Windows 那样会显示出当前所在分支,我怕上传错需要经常输入git branch
来检查所在分支。 - 评论爬取
上学期刚刚学了爬虫,这部分按道理来讲不会花费很长时间。可是考完试就没怎么看过了,知识都还给了老师(对不起杨老师🧎♂️),刚上手有一些生疏,不过通过看上学期写过的代码,渐渐找回了点感觉。自己异步加载这块不太会,就用了最原始的requests
库和正则表达式来爬😂,通过浏览网页发现了下面一些规律⬇️:
⬆️这是第一页评论的URL和部分代码
⬆️这是第二页评论的URL,它的cursor
值是第一页源代码中的last
值(以此类推),最后的source
值比第一页+3。
⬆️这是第三页评论的URL,它的cursor
值是第二页源代码中的last
值(不再展示),最后的source
值比第二页+1(以此类推)。
至此结合发现的规律,本来想写循环的,但是这先加三再依次加一对我来说有些难度,所以我就用了最笨的方法,建了好几个列表分别存放第一页,第二页和之后页的评论,最后将他们合在一起。因为Mac创建不了txt文件(后来我发现可以但是有些麻烦),我就用之前的一个txt文档通过复制输出结果来保存的所有评论内容(别笑😂我知道这很蠢)⬇️
- jieba分词
这部分我先是从网上找到Mac下载的国内镜像代码,然后又通过老师发的链接和自己搜索到的一些博客简单学习了一下如何操作就开始了分词部分。我一开始是打算先用jieba分词,然后筛选出中文,再进行词频统计,可是在筛选中文的时候遇到了些问题我没研究出办法解决,此路❌。经过简单的思考,我的再次剑走偏锋用了“曲线救国”的方法完成了分词:除了存放所有评论内容的txt文件再准备两个空的txt文件。先用re.findall
筛选出所有的汉字(用空格隔开)存放到其中一个txt文件中,再将全部汉字结合在一起用jieba分词,筛选出两个字以上的存入最后一个txt文件中(这种方法我觉得只有我这种🥬🐔才想得出来)。代码如下⬇️:
- 词频统计
词频统计是给后面做词云图做准备,了解到最后html展示词云图需要这样{'name': '致敬', 'value': 1189}
形式的json格式,我通过博客学习用了for循环和字典列表转换先计算出词频并按从多到少的顺序排序。代码片段如下⬇️
接着新建了一个字典,用for循环筛选出词频在10以上的,按{'name': '致敬', 'value': 1189}
这样的格式输出。代码片段如下⬇️
最后将输出存入建好的空json文件中,如果只用json.dump
可能会出现汉字乱码,这时候只需在后面加入ensure_ascii=False
即可✌️ - 词云图以及网页显示
这部分一开始想自己写个前端网页,然后学着插入制作词云图,但作业时间将至加上自己鼓捣研究了好久也没有成功,向同学请教后下载到了个词云图的样例代码,将json
文件中出现100次以上的数据复制如html中,修改了一下js
的位置词云图就显示了出来,这部分在之后我会再努力学一学,争取早日能靠自己写出来。做出来的词云图如下⬇️
- 遇到的问题
我认为遇到最大的问题就是基础过于薄弱,之前学过的不能信手捏来😣这导致做作业当中国需要复习以及学习新知识的耗时过长,这点在今后学习中要努力改正,跟上大部队的步伐。
Mac OS X 系统班里几乎没有一起用的同学,这方面编程遇到的一些问题也得努力解决。
这第一次作业只是开始,为了能跟上大部队,要努力学习新的知识,并及时回顾旧的,做到学以致用。
Mac 独立战士🪖冲🦆!!!! - 部分参考网址
- Git 常用命令大全
- Mac 如何删除 Git 中的 .DS_Store
- Python3 读取写入 json 的中文乱码问题
- git commit 规范指南
- Mac pip 安装 python 中文分词库 jieba
- Git 修改 commit 的提交信息(最开始想修改commit内容,但后来种种原因就没用到,先码住)
- python 去除非中文字符
- python 安装 pyecharts 问题解决 macOS 系统环境
- etc.