有一种夏天叫做宫崎骏的夏天
本文作者:冀思慧,中南财经政法大学金融学院
本文编辑:万 浩
技术总编:王子一
Stata&Python云端课程来啦!
为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~爬虫俱乐部推出了Python编程培训课程、Stata基础课程、Stata进阶课程。报名课程即可加入答疑群,对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦。我们在这篇推文的最后提供了每门课程的课程二维码,大家有需要的话可以直接扫描二维码查看课程详情并进行购买哦~
https://api.bilibili.com/x/v2/dm/web/history/seg.so?type=1&oid=168454964&date=2022-04-26
##单页爬取
import requests
import re
import time
request_url = 'https://api.bilibili.com/x/v2/dm/web/history/seg.so'
data = {
'type': '1',
'oid': '168454964',
'date': '2022-04-26'
}
headers = {
"cookie": "输入自己的cookie",
"user-agent": "输入自己的user-agent"
}
res = requests.get(request_url,headers=headers,params=data)
html = res.text
##print(html)
resmatch = re.findall(':(.*?)@',html, re.S)
danmu_list = []
for k in range(len(resmatch)):
word = re.findall('[\u4e00-\u9fa5]|\u3002|\uff1f|\uff01|\uff0c',resmatch[k]) # 匹配中文、句号、问号、感叹号以及逗号
danmu = ''.join(w for w in word)
danmu_list.append(danmu)
print(danmu_list)
观察4月26日和4月27日弹幕存储的url:
#2022-04-26
https://api.bilibili.com/x/v2/dm/web/history/seg.so?type=1&oid=168454964&date=2022-04-26
#2022-04-27
https://api.bilibili.com/x/v2/dm/web/history/seg.so?type=1&oid=168454964&date=2022-04-27
import requests
import re
import time
#通过循环语句实现多页爬取
headers = {
"cookie": "输入自己的cookie",
"user-agent": "输入自己的user-agent"
}
request_url = 'https://api.bilibili.com/x/v2/dm/web/history/seg.so'
danmu_list = []
for i in range(1,31):
data={
'type': '1',
'oid': '168454964',
'date': '2022-04-{:0>2d}'.format(i)
}
try:
res=requests.get(request_url,headers=headers,params=data,timeout=5)
html=res.text
resmatch = re.findall(':(.*?)@',html, re.S)
for k in range(len(resmatch)):
word = re.findall('[\u4e00-\u9fa5]|\u3002|\uff1f|\uff01|\uff0c',resmatch[k])
danmu = ''.join(w for w in word)
danmu_list.append(danmu)
time.sleep(5)
except Exception as e:
print('{}这一天的弹幕出错了,原因是{}'.format(data['date'],e))
time.sleep(5)
continue
#将存储弹幕内容的列表danmu_list写入txt文件
with open(r"./danmulist.txt",'w+') as f:
for item in danmu_list:
f.write(item)
f.write("\n")
四、根据弹幕内容,绘制词云图
import jieba
import jieba.analyse as anly
import numpy as np
import PIL.Image as Image
from wordcloud import WordCloud,ImageColorGenerator
#去停用词
stopwordlist=[]
fencilist=[]
resultlist=[]
with open(r"./停用词表.txt",'r',encoding='utf-8') as f:
for i in f:
stopwordlist.append(i)
with open(r'.\danmulist.txt', 'r',encoding='gbk') as test:
for line in test:
fencilist.append(line.strip())
for i in fencilist:
if(i not in stopwordlist):
resultlist.append(i)
with open(r"处理过的分词.txt",'w',encoding='gbk') as xx:
for x in resultlist:
xx.write(x)
#分词,画词云图
text = open(r'./处理过的分词.txt', 'r', encoding='gbk').read()
word_list = jieba.cut(text)
space_word_list = ' '.join(word_list)
keywords = [] # 创建空列表(list)
for x, w in anly.extract_tags(space_word_list,topK=200, withWeight=True):
keywords.append(x) # 前200关键词组成的list
space_word_list = ' '.join(keywords)
mask_pic = np.array(Image.open("魔女宅急便.jpg"))
word = WordCloud(
width=600, height=300,
font_path="msyh.ttc", # 设置字体,本机的字体
stopwords=stopwordlist,
scale=4, #设置图片的清晰度
mask = mask_pic, # 设置背景图片
background_color='white', # 设置背景颜色
max_font_size=150,
min_font_size=3,
).generate(space_word_list)
image = word.to_image()
word.to_file('1.png') # 保存图片
image.show()
END
腾讯课堂课程二维码
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐
换装术|多个Excel文件如何一键转为dta格式
【基础篇】Python可变对象与不可变对象
Stata绘图系列——细节掌控绘图区域!
4月A股的收官战之概念板块哪家强?解放双手!你必须要会的两个命令—inlist & inlist2
【基础篇】字符串之判断方法
Stata绘图系列——让你的直方图随心所欲
【爬虫篇】湖人无缘季后赛,球迷如何回应
客官,要来份四象限图吗?
Python实现简繁体转换
Stata与Python交互方法及数据传递
“青铜”爬“王者”
留下想要的变量,你会几种方法?
【爬虫篇】基于selenium爬取美团评论
双标的莱万——足球无关政治?!
Stata处理重复值:duplicates
It's time to send a flower to your lover! 2021各省GDP新鲜出炉爬虫实战-采集全国各省疫情数据
log——为你的操作保驾护航
一行代码教你玩转emoji
票房遇冷的春节档口碑冠军丨《狙击手》影评分析
学习丰县,营造良好营商环境!
大国丢娃图:从川渝到徐州!
丰县“失火”,殃及徐州:股市超跌近30亿!
Unicode转义字符——编码与解码
徐州!徐州!
B站弹幕爬虫——冬奥顶流冰墩墩&雪容融
不会用Stata做描述性统计表?so easy!
丰沛之地:备足姨妈巾
过年啦,用Python绘制一幅属于你的春联吧!
登上爬虫俱乐部“时光机” |上“机”出发 开启一段奇妙之旅【基础篇】查找并输出子字符串的定位
Stata中的小清新命令——添加观测值
PCA(主成分分析法)降维——Python实现
关于我们
微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。
此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。