查看原文
其他

【爬虫篇】湖人无缘季后赛,球迷如何回应

爬虫俱乐部 Stata and Python数据分析 2023-01-01

本文作者:孙一博,中南财经政法大学金融学院

本文编辑:万   浩

技术总编:王子一


Stata&Python云端课程来啦!

     为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~爬虫俱乐部推出了Python编程培训课程Stata基础课程Stata进阶课程。报名课程即可加入答疑群,对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦。我们在这篇推文的最后提供了每门课程的课程二维码,大家有需要的话可以直接扫描二维码查看课程详情并进行购买哦~

引言
季后赛已经开始,而湖人已经进入假期了。湖人本赛季的结局,确实让人颇感失望。在赛季初的时候,湖人全员踌躇满志,集齐三巨头,再加一批身经百战的名人堂老将。原本大家都以为湖人这赛季,肯定会成为新赛季的夺冠热门。

自从1984-85赛季前首次公布夺冠热门球队以来,排名前两名的球队从未缺席过季后赛。湖人作为本赛季开始前夺冠第二大热门的球队是第一支做到缺席季后赛的。最后得到这样的结果,是所有人始料未及的。
对于湖人画出这样的句号,看球的朋友们是失望透顶还是鼓励湖人从新起点出发,我们试着从虎扑流言板下的评论中看看大家的情绪和反应。为此,小编选取了热度最高的帖子,爬取流言板下面的评论,并绘制成词云图,一览大家的反应。


一、爬取评论爬虫前的准备
首先,确定我们要爬取的网页(https://bbs.hupu.com/52903282.html ),分析网页的结构和查看源代码。我们打开开发者模式,在开发者工具中选择Network,得知该网页的请求方式是get。

    

之后,我们使用惯用的Xpath定位到留言板下面的评论,将评论逐条放入列表中,便可以得到该页的评论内容。在进行多页面处理时,发现第二页与第三页的网址后面都是在html前有相应的数字。如此一来,我们用循环进行之后271页的爬取工作便好了。

爬虫开始将我们需要用的包导入:
import requestsfrom 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 jiebaimport jieba.analyse as anlyimport numpy as npimport PIL.Image as Imagefrom 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()词云图结果如下:


三、词云图一览最终,我们分析得出,球迷大多是对于湖人的调侃。“逃过一劫”的梗出现的频率相当高,这个梗源于浓眉之前表示去年季后赛是自己受伤才让太阳逃过一劫。然而本赛季太阳高居西部第一,且多次战胜湖人,看来球迷们对于戴维斯的打脸行为,调侃的不亦乐乎。感叹真的结束了和舒服了的观众也不在少数,但仍有很多球迷喊着那五个字“湖人总冠军”,或是期待下个赛季湖人可以再冲击总冠军。同时在湖人无缘季后赛的帖子下,也不乏对于马刺的讨论。因为作为历史强队的马刺,今年也同样没进季后赛,这也是自1976年联盟合并以来,湖人马刺首次一起无缘季后赛。当然,只要是湖人的帖子,都不会缺少科比名字的出现。这场比赛之后,一张图片在社交媒体上广为流传,一名NBA球迷在场下举起纸张,表示“换作科比,他绝不会坐在场边目送湖人出局。”但实话说,如果詹姆斯伤势严重,他理应在场下休息,道德绑架并不可取。是面对湖人的这样的逆境,人们总是很容易想起那个血性、不屈服的男人。

属于老詹和湖人的有一个赛季,已经结束了。
接下来,就一起看看这个休赛期,湖人会有什么大动作吧。


最后,我们为大家揭秘雪球网(https://xueqiu.com/) 最新所展示的沪深证券和港股关注人数增长Top10。
       

腾讯课堂课程二维码







 对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!














往期推文推荐

Stata&Python网络课程涨价声明

 Stata与Python交互方法及数据传递

 “青铜”爬“王者”

 留下想要的变量,你会几种方法?

 Python:朋友圈配图,我承包了

 绘制全国祠堂密度地图

 如何使用Stata绘制一幅好看的柱状图?

【爬虫篇】基于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)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众
号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存