【爬虫篇】湖人无缘季后赛,球迷如何回应
本文作者:孙一博,中南财经政法大学金融学院
本文编辑:万 浩
技术总编:王子一
Stata&Python云端课程来啦!
为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~爬虫俱乐部推出了Python编程培训课程、Stata基础课程、Stata进阶课程。报名课程即可加入答疑群,对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦。我们在这篇推文的最后提供了每门课程的课程二维码,大家有需要的话可以直接扫描二维码查看课程详情并进行购买哦~
季后赛已经开始,而湖人已经进入假期了。湖人本赛季的结局,确实让人颇感失望。在赛季初的时候,湖人全员踌躇满志,集齐三巨头,再加一批身经百战的名人堂老将。原本大家都以为湖人这赛季,肯定会成为新赛季的夺冠热门。
对于湖人画出这样的句号,看球的朋友们是失望透顶还是鼓励湖人从新起点出发,我们试着从虎扑流言板下的评论中看看大家的情绪和反应。为此,小编选取了热度最高的帖子,爬取流言板下面的评论,并绘制成词云图,一览大家的反应。
首先,确定我们要爬取的网页(https://bbs.hupu.com/52903282.html ),分析网页的结构和查看源代码。我们打开开发者模式,在开发者工具中选择Network,得知该网页的请求方式是get。
import requests
from lxml import etree
随后,我们写一个循环对每一页进行抓取,并将评论逐条保存至新建的文档中。all_comment=[]
for i in range(1,1000):
url = "https://bbs.hupu.com/52903282-%s.html" % i
headers={
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36"
}
html=requests.get(url, headers = headers)
html.encoding = 'utf-8'
tree = etree.HTML(html.text)
#comment_xpath="/html/body/div[@id='container']/div[@class='bbs-post-web']/div[@class='bbs-post-web-container']/div[@class='bbs-post-web-body']/div[@class='bbs-post-web-body-left-wrapper']/div/div[@class='bbs-post-web-main']/div[@class='wrapper-container margin-top-10']/div[@class='bbs-post-wrapper gray']/div[@class='bbs-post-wrapper-content']/div/div[@class='post-reply-list ']/div[@class='post-reply-list-container']/div[@class='reply-list-content']/div[@class='post-reply-list-content']/div[@class='reply-list-wrapper']/div[@class='m-c']/div[@class='bbs-thread-comp main-thread']/div[@class='thread-content-detail']/p"
comment_xpath="//div[@class='bbs-post-wrapper-content']/div/div[@class='post-reply-list ']/div[@class='post-reply-list-container']/div[@class='reply-list-content']/div[@class='post-reply-list-content']/div[@class='reply-list-wrapper']/div[@class='m-c']/div[@class='bbs-thread-comp main-thread']/div[@class='thread-content-detail']/p"
comment_list=tree.xpath(comment_xpath)
comment_list = [comment.text for comment in comment_list]
if len(comment_list) == 0: # 当页面没有要抓取的信息时,跳出循环
break
while None in comment_list:
comment_list.remove(None)
all_comment.extend(comment_list)
file = "./湖人.txt"
with open(file, "w+", encoding="gb18030") as f :
for comment in zip(all_comment) :
f.write('''"%s"\n''' % (comment))
print("程序执行完毕")
这样我们就可以得到一个txt文档,里面包含了我们想要的全部评论。可见大家对于湖人无缘季后赛这件事情都表示可惜与无奈。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'./湖人.txt', 'r',encoding='gb18030') 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='gb18030') as xx:
for x in resultlist:
xx.write(x)
之后,我们再对评论的内容进行分词处理,将“湖人”、“赛季”、“得分王”、“詹姆斯”,等一些无法体现情绪倾向的词汇剔除掉,以便更直观看到大家的态度。text = open(r'./处理过的分词.txt', 'r', encoding='gb18030').read()
word_list = jieba.cut(text)
space_word_list = ' '.join(word_list)
keywords = [] # 创建空列表(list)
stopwords = ['湖人', '赛季', '得分王', '附加赛','季后赛', '球迷','詹姆斯', '威少', '球队','哈哈哈','浓眉', '比赛', '知道', '奇才', '雷霆', '两场']
for x, w in anly.extract_tags(space_word_list,topK=200, withWeight=True): # 前200关键词组成的list
if x not in stopwords:
keywords.append(x)
print(keywords)
space_word_list = ' '.join(keywords)
我们调用包PIL使得最终得到的词云图是以湖人队标为模板的,绘制词云图:mask_pic = np.array(Image.open("./Lakers对标.jpg"))
word = WordCloud(
font_path='msyh.ttc', # 设置字体
scale=4, #设置图片的清晰度
mode = "RGBA",
mask = mask_pic, # 设置背景图片
background_color='FloralWhite', # 设置背景颜色
max_font_size=150, # 设置字体最大值
).generate(space_word_list)
word.recolor(color_func=ImageColorGenerator(mask_pic))
image = word.to_image()
word.to_file('湖人词云图.png') # 保存图片
image.show()
词云图结果如下:接下来,就一起看看这个休赛期,湖人会有什么大动作吧。
腾讯课堂课程二维码
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐
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实现
超好用的事件研究法
如何绘制任泽平《鼓励生育基金》的几幅图
Python 第六天——字符串
findname——想要什么找什么
Python字符串之“分分合合”
PDF转docx可批量操作?——wordconvert的小技巧
考研之后,文科生需以“do”躬“do”!
关于我们
微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。
此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。