| 博客班级 | 2018级计算机和综合实验班 |
|---|---|
| 作业要求 | 第一次个人编程作业 |
| 作业目标 | 数据采集与处理,数据可视化--词云图,git的使用 |
| 作业源代码 | first-personal-work |
| 学号 | 211806180 |
- 简单的时间记录
| 时间分布 | 分析思路 | 编写代码 | 代码行数 | 知识学习 |
|---|---|---|---|---|
| 10h+ | 1h+ | 5h+ | 100+ | 4h+ |
二、实战演练
- 数据采集
- 采集腾讯视频里电视剧《在一起》的全部评论信息
信息采集哪家强,专业技术靠爬虫
好家伙,老本行,话不多说直接开爬
- 打开评论看到加载更多,第一时间想到异步加载,经过对比可以发现发现url不同的地方在于:cursor=和_=
![]()
- 找到规律就非常好写代码:
思路:抓取url地址-->遍历所有url-->正则提取评论-->保存结果为json
主要代码:
for i in range(0, 1024):
url = 'https://coral.qq.com/article/5963120294/comment/v2?callback=_article5963120294commentv2&orinum=10&oriorder=o&pageflag=1&cursor=' + cursor + '&scorecursor=0&orirepnum=2&reporder=o&reppageflag=1&source=1&_=' + str(page)
source = requests.get(url, headers=headers).content.decode()
con='"content":"(.*?)"'
comment = re.compile(con,re.S).findall(source)
comments.append(comment)
id='"last":"(.*?)"'
cursor = re.compile(id,re.S).findall(source)[0]
page = str(int(page) + 1)
- 数据处理
- 用jieba进行分词,统计评论中的高频词及数量
这部分第一次接触,先学习了一下jieba的基础
代码部分借鉴了一位大神(百度的方法链接找不到了sorry!)
主要功能:去除了空格回车等字符,让分词更高效
主要代码:
cut_words=""
for line in open('./comments.json',encoding='utf-8'):
line.strip('\n')
line = re.sub("[A-Za-z0-9\:\·\—\,\。\“ \”]", "", line)
seg_list=jieba.cut(line,cut_all=False)
cut_words+=(" ".join(seg_list))
all_words=cut_words.split()
print(all_words)
c=Counter()
for x in all_words:
if len(x)>1 and x != '\r\n':
c[x] += 1
- 数据分析展示
- 将采集到的评论信息做成词云图
结合js插件echarts.js和echarts-wordcloud.min.js完成index.html
参考了大神的方法用评论词自定义了一个"牛"形状的词云图
三、GitHub
- GitHub代码地址:Auxim10/first-personal-work
忘记截图了,写个简易版的步骤好了:
大前提:完成初始配置
1. 克隆仓库到本地: git clone https://github.com/Auxim10/first-personal-work.git
2. 进入克隆到本地的文件夹: cd first-personal-work
3. 新建分支: git switch -c crawl
4. 将上传的文件复制到文件夹
5. 上传文件: git add .
6. 提交: git commi -m "提交信息"
7. 上传: git push -u origin crawl
8. 重复3-7操作完成另一分支
9. 合并分支: git merge crawl;git merge chart
四、经验总结
-
学习jieba基础,练习四种模式
- 全模式
- 精确模式
- 新词识别
- 搜索引擎模式
-
index.html写了两种代码,第一次写的时候不会自定义图形,只能进行简单的图形转换
百度了自定义图形的方法换了百度的写法,将两种方法结合了一下(ps:改太多次已经乱了章法)
添加image
将形状图转换为base64形式,添加到代码中
- 在编写html的时候评论词无法修改颜色
修改相关代码即可
textStyle: {
color: function() {
return 'rgb(' + [
Math.round(Math.random() * 160),
Math.round(Math.random() * 160),
Math.round(Math.random() * 160)
].join(',') + ')';
}
}
4. 数据展示最初是将数据直接复制到html编写中,所以百度了一下用jQuery+Ajax+js实现请求json格式数据并渲染到html页面方法也参悟了,并进行了试验,但因为复制数据太辛苦不想改掉!所以没有对代码进行修改orz
五、参考文献
python爬虫学习笔记(一)—— 爬取腾讯视频影评
jieba“结巴”中文分词:做最好的 Python 中文分词组件
echarts实现词云自定义形状的示例代码
Commit message 和 Change log 编写指南