【爬虫篇】解锁《梦华录》之东京繁华生活
本文作者:赵一帆,中南财经政法大学金融学院
本文编辑:万 浩
技术总编:王玉婷
Stata&Python云端课程来啦!
好消息好消息,爬虫俱乐部开辟小鹅通战场!!爬虫俱乐部隆重推出小鹅通网络课程,将Stata基础课程,Stata进阶课程和Python课程都上传至小鹅通平台,欢迎大家多多支持订阅!报名课程即可加入答疑群,对报名有任何疑问欢迎在公众号后台留言哦。如需了解详情,可以通过课程链(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或课程二维码进行访问哦~
下载豆瓣评论的数据
requests
库爬取《梦华录》该电视剧的豆瓣评论内容和评价时间,网址为:https://movie.douban.com/subject/35231822/comments?limit=20&status=P&sort=new_score
start
参数发生了变化,limit
表示每页获取到评论的数量,所以我们在爬虫翻页的时候只需要设置start
参数就可以了。import requests
import time
import re
import pandas as pd
import matplotlib.pyplot as plt
def get_url(i):
url = f'https://movie.douban.com/subject/35231822/comments?start={i * 20}&limit=20&status=P&sort=new_score'
return url
def get_info(url):
headers = {
"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.39"}
response = requests.get(url, headers=headers)
html = response.text
comments_list = [i for i in re.findall('<span class="short">(.*?)</span>', html , re.S)]
comments_time_list = [i.strip() for i in re.findall('<span class="comment-time " title="(.*?)">',html, re.S)]
df = pd.DataFrame({"评论时间": comments_time_list, "评论内容": comments_list})
return df
if __name__ == "__main__":
df = pd.DataFrame(columns=['评论时间','评论内容'],dtype=object)
for i in range(1,40):
url = get_url(i)
print(f"正在打印第{i}页")
df1 = get_info(url)
df = pd.concat([df,df1])
time.sleep(50)
df.to_csv('梦华录.csv',encoding='utf_8_sig')
绘制词云图
jieba
第三方库,通过对观众的评论内容分词,进行词频统计。在绘制词云图的过程中,我们需要先导入背景图片,设置词云图的参数,最终直观展示出《梦华录》豆瓣评价的词云图,#导入第三方库
import jieba
from wordcloud import WordCloud
from imageio import imread
#导入爬取的数据
df = pd.read_csv("梦华录.csv",index_col=0)
# 分词操作
jieba.add_word("梦华录")
df["切分后评论"] = df["评论内容"].apply(jieba.lcut)
# 去除停用词
with open("stopword.txt","r",encoding="gbk") as f:
stop = f.read() # 返回的是一个字符串
stop = stop.split() # 这里得到的是一个列表
stop = stop + [" ","\n","\t"]
df_after = df["切分后评论"].apply(lambda x: [i for i in x if i not in stop])
#print(df_after)
# 词频统计
all_words = []
for i in df_after:
all_words.extend(i)
word_count = pd.Series(all_words).value_counts()
print(word_count)
#绘制词云图
# 读取背景图片
back_picture = imread("shfb.png")
# 设置词云参数
wc = WordCloud(font_path="F:\Python\Winter\dist\图表\SimHei.ttf",
background_color="black",
max_words=2000,
mask=back_picture,
max_font_size=200,
random_state=42
)
wc2 = wc.fit_words(word_count)
# 绘制词云图
plt.figure(figsize=(20,10))
plt.imshow(wc2)
plt.axis("off")
plt.show()
wc.to_file("ciyun.png")
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐 爬虫俱乐部的精彩答疑——DOS命令 爬虫俱乐部的精彩答疑之换行问题
爬虫俱乐部的精彩答疑--路径设置乱码怎么破?
爬虫俱乐部的精彩答疑--putdocx的二三事
爬虫俱乐部精彩答疑之Python篇
爬虫俱乐部的精彩答疑--花式重命名变量
今天你还是“刘畊宏女孩”吗?爬虫俱乐部在山东财经大学金融学院暑期Stata网课上的精彩答疑
Stata绘图系列——玩转绘图通用选项(一)
出人意料!这所大学的A级学科总数竟超越清华北大!
Stata数据读入——打开方式不同?
数据类型——Dict、Set与Frozenset简析
Stata小贴士之外部命令安装路径
有一种夏天叫做宫崎骏的夏天
换装术|多个Excel文件如何一键转为dta格式
【基础篇】Python可变对象与不可变对象
Stata绘图系列——细节掌控绘图区域!
4月A股的收官战之概念板块哪家强?解放双手!你必须要会的两个命令—inlist & inlist2
关于我们
微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。
此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。