「这是我参与2022首次更文挑战的第1天,活动详情查看:2022首次更文挑战」。
之前帮前女友做关于女权相关话题论文的数据收集分析,因为以前有做过相关数据分析的经验,就顺手帮忙爬了一下数据,拿mac跑了半天,遂在此记录一下过程,给没有相关经验的朋友一点参考。
一、爬取数据
1、首先得有爬虫代码
这里因为我(懒)不太了解爬虫怎么写。所以借用了GitHub上现成的爬虫项目,具体可以参考:weibo-crawler。
- 拉下项目代码
- pip安装所需依赖
- 根据readme文档中的程序设置,填写自己需要的信息(文档中非常的详细)
- 执行代码即可
- 推荐使用json或csv的格式存储就可以了,后续数据分析也比较方便。如果有进一步的数据展示或者数据分析的需求可以使用Mysql等数据库进行存储。
2、读取json数据
读取json文件将微博内容写入txt文件中。
#读取json文件
f = open("e.json",'r',encoding='utf-8')
content = json.loads(f.read())
temp = content['weibo']
str = ''
for item in temp:
str = str + item['text']
f1=open("poem5.txt", 'a', encoding='utf-8')
f1.write(str+"\n")
二、分析数据
1、使用jieba分词
上个大学选修python课程,除了比较好过之外,记住了这个jiaba分词工具,非常好用。
f1=open("poem5.txt", 'r', encoding='utf-8')
str1=f1.read()
counts={}
# 使用jieba分词
words=jieba.cut(str1)
for word in words:
if len(word) ==1:
continue
else:
counts[word]=counts.get(word,0)+1
items = list(counts.items())
items.sort(key=lambda x:x[1],reverse=True)
以中国妇女报的微博为例,结果如下,因为没有进行筛选,各种乱七八糟的字符都有,很难看。
2、筛掉非中文单词
使用正则表达式将属于中文的单词保留下来。
#检验是否含有中文字符
def is_contains_chinese(strs):
for _char in strs:
if '\u4e00' <= _char <= '\u9fa5':
return True
return False
result=''
f2=open("result.txt", 'a', encoding='utf-8')
for i in range(len(items)):
word,count = items[i]
cc=str(count)
if(is_contains_chinese(word)):
result = result+word+' '+cc+'\n'
f2.write(result)
最终的结果如下,稍微能看得过去。