王力宏的瓜很大!我用Python爬取了微博评论区,发现更精彩
↑ 关注 + 星标 ,每天学Python新技能
后台回复【大礼包】送你Python自学大礼包
大家好,我是龙哥!
网页分析
我们F12打开浏览器开发者模式如下:
页面上展示的信息我们都可以在右侧对应的真实链接中反映出来。
并且我们可以看到这是一个GET请求,我们可以在请求网站时加上
headers防止被网站反爬而不能获取到数据
发送请求
我们要获取的数据很简单,用户id、用户名称、评论时间、点赞人数和评论内容即可。
其他数据可以根据需求自行获取
如上图所示,我们要获取的数据是存在于一个叫做data的json文件中
url = 'https://m.weibo.cn/comments/hotflow?id=4715546983534277&mid=4715546983534277&max_id_type=0'
print('当前url是:', url)
headers = {
'cookie': 'WEIBOCN_FROM=1110006030; SUB=_2A25MZ_SXDeRhGeVG7lAZ9S_PwjiIHXVvq5zfrDV6PUJbkdCOLUOtkW1NT7e8qp27GOSnSoETtSb_elCC-bWgVj4i; MLOGIN=1; _T_WM=38762224%2594%25E7%259B%259F%25E6%2589%258B%25E6%25B8%25B8%25E8%2583%25BD%25E7%25A2%25BE%25E5%258E%258B%25E7%258E%258B%25E8%2580%2585%25E8%258D%25A3%25E8%2580%2580%25E5%2590%2597%2523%26uicode%3D20000061%26fid%3D4690050909209999',
'referer':'https://m.weibo.83534277',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKi96.0.4651.0 Safari/537.36'
}
resp = requests.get(url, headers=headers).json()
ic(resp)
接下来我们再获取data中的提取具体数据如下:
for item in wb_info:
user_id = item.get('user')['id'] # 用户id
author = item['user']['screen_name'] # 作者名称
auth_sign = item['user']['description'] # 作者座右铭
time = str(item['created_at']).split(' ')[1:4]
rls_time = '-'.join(time) # 发帖时间
text = ''.join(re.findall('[\u4e00-\u9fa5]', item['text'])) # 发帖内容
'''
6252999249 可爱fanChunChun 独立自行 Dec-18-00:13:25 被降热搜了资本的力量就是牛逼哈
2013749944 你想的那些东 2015 很高兴认识你们 Dec-18-00:26:08 广电总局立刻封杀王力宏下架其所有音乐与电影
6739242229 天空记录器 普通人,就爱指指点点,你杠我就是我对,懂?Dec-18-00:19:34 重点不是这个一直以来有权有势的人操弄媒体媒体操弄大众导致社会价值观的偏差与论思维被控制虽然这个产业很大我衷心的希望未来有权有势的人能被禁止透过营销来控制与论导向和维护自己的人设让公众人物能够以真实的面貌呈现在大众面前也让事实能够被看见
6306576835 山支大队真棒 美女都喜欢 Dec-18-00:14:56 玛德签了不平等婚前合约的情况下生了三个孩子女孩子一定要爱自己啊
3030355620 放开我我要给贺银成生猴子 随便逛逛 Dec-18-00:12:49 好像不仅说了出轨还有召吧
7644844440 小悦今年上岸了吗 非追星人 Dec-18-00:17:38 让高学历老婆一胎胎的生出轨选择的却都是漂亮的小女生很难不让人想到是找高学历孕母从岁就被惦记的高级孕母但凡她没有考上哥伦比亚大学她都会从名单里踢出去吧
5656318857 MISS_Love_1314 Dec-18-00:18:08 所以娃哈哈换掉王力宏是有预感还是
5671431234 阔爱到冒泡 早睡早起身体好 Dec-18-00:22:38 作为女生大家能不能让她上热搜
6233343954 镜面cyndi 脑子里好多东西没地方说 Dec-18-00:18:23 垃圾男在降热搜了吐
6346254326 xxxx_zzz_ Zhang·F·Q Dec-18-00:21:20 从热四降到了果然是李靓蕾文中写的有权有势的人会操控舆论导向和维护自己的人设看你怎么公关吧摊手
7407079288 我亦灿灿 Dec-18-00:19:06 娃哈哈这波我在第五层
5262173636 粥南家的吃饭小能手 好好生活 变得更好 Dec-18-00:19:33 图片评论
7404278667 小宇和胖胖阿毛 阿毛是个大胖可爱金毛~画不动图的建筑转行规划狗,无逻辑话痨。Dec-18-00:19:56 这热搜度撤的太假了
5637990265 溜溜达达的山东小大爷 畅饮泉中水,荡舟大明湖,土生土长的泉城济南土人,溜溜达达的山东中年小老头子(-ι_- ) Dec-18-00:14:45 花田里犯了错挖鼻草垛子里也
6572247262 Piertotum-Locomotor 老港剧人 Dec-18-00:14:03 王力宏说自己单纯汗
5268129530 棠花落云 四级必过 Dec-18-00:33:51 王力宏今年四六级通过率低你负主要责任
7578619018 重生之钮祜禄肠 老公奴 Dec-18-00:17:19 别压热搜了怒怒怒怒怒
'''
多页获取
因为我们要获取的数据不止一页,所以咱们来接着分析翻页。就从每一页的url开始。
https://m.weibo.cn/comments/hotflow?id=4715546983534277&mid=4715546983534277&max_id_type=0
https://m.weibo.cn/comments/hotflow?id=4715546983534277&mid=4715546983534277&max_id=388720425209630&max_id_type=0
https://m.weibo.cn/comments/hotflow?id=4715546983534277&mid=4715546983534277&max_id=179538338095825&max_id_type=0
https://m.weibo.cn/comments/hotflow?id=4715546983534277&mid=4715546983534277&max_id=149439207266543&max_id_type=0
for page in range(2, 100 + 1):
print(f'----------正在打印第{page}页数据----------')
if page > 16:
max_id_type = 1
else:
max_id_type = 0
url = f'https://m.weibo.cn/comments/hotflow?id=4715546983534277&mid=4715546983534277&max_id={max_id}&max_id_type={max_id_type}'
数据存储
我们使用openpyxl将爬取到的数据保存至Excel文件中,方便我们后续对数据进行处理和可视化操作。
总共获取到100页数据如下:
数据清洗
我们使用pandas来清理数据,删除重复记录和有缺失值的行,随机展示五条数据如下:
pd.set_option('display.max_columns', None) # 显示完整的列
pd.set_option('display.max_rows', None) # 显示完整的行
pd.set_option('display.expand_frame_repr', False) # 设置不折叠数据
# 读取数据
rcv_data = pd.read_excel('./王力宏.xlsx')
# 删除重复记录
rcv_data = rcv_data.drop_duplicates()
# 删除缺失值
rcv_data = rcv_data.dropna()
# 抽样展示5条数据
print(rcv_data.sample(5))
''' 用户id 作者名称 作者座右铭 发帖时间 发帖内容
417 2436212781 奇艺1107 任何为人称道的美丽,不及第一次遇见你。。 Dec-18-11:47:47 太恶劣了,想玩别结婚啊,骗婚怎么回事
1235 7197281512 ww吴哼哼 日常为吴宇恒打call Dec-18-09:01:40 离谱!这种新闻越来越多,真害怕有一天当丈夫对于出轨这个事实会对妻子坦然大方地说“我只是犯了天...
1006 7411126696 火狐狸60292 Poverty and human folly magnify natural disasters Dec-18-09:18:33 又一个艺人社崩塌
1282 6067434117 竹苜 喜欢再来烦我! Dec-18-08:58:10 卧槽,这特么什么人。。。渣渣渣!服了。
1169 1882120530 最闪亮de謃謃 大度从容看世界 Dec-18-09:07:24 一切毁于素人'''
词频展示
我们使用pandas分析评论数据并提取文章前十大词汇
并使用气泡图和树状图展示如下:
# 词频设置
all_words = [word for word in result.split(' ') if len(word) > 1 and word not in stop_words]
wordcount = Counter(all_words).most_common(10)
x1_data, y1_data = list(zip(*wordcount))
'''
('王力宏', '封杀', '娱乐圈', '不是', '什么', '没有', '资本', '出轨', '希望', '媒体')
(107, 54, 47, 42, 42, 40, 38, 38, 30, 29)
'''
气泡图
饼图
词云展示
最后我们使用wordcloud来切割分词,使用stylecloud来展示多样形式的词云图如下:
# 获取列内容
c_title = rcv_data['发帖内容'].tolist()
# 观影评论词云图
wordlist = jieba.cut(''.join(c_title))
result = ' '.join(wordlist)
# 设置停用词
stop_words = ['都', '我', '了', '的', '是', '他', '你', '有', '啊', '就', '吧', '不', '人', '还', '这', '事', '也', '没', '吗',
'知道', '男人', '这么', '就是', '一个', '好', '说', '太', '要', '给', '对', '很', '和', '又', '在', '一直', '自己', '真的', '这个']
def visual_ciyun1():
mask = imread('wlh.jpg')
wordcloud = WordCloud(font_path='msyh.ttc', mask = mask, stopwords=stop_words, background_color='white').generate(result)
wordcloud.to_file('pic.jpg')
print('词云图1绘制成功!')
点赞最多
max_stars = rcv_data[rcv_data['点赞人数'] == rcv_data['点赞人数'].max()]
'''
ic| max_stars: 用户id 作者名称 作者座右铭 发帖时间 点赞人数 发帖内容
0 6252999249 可爱fanChunChun 独立自行 Dec-18-00:13:25 73195 被降热搜了资本的力量就是牛逼哈
'''
热搜评论点赞排行榜
我们按照评论点赞将评论排序如下:
情感分析
all_words = [word for word in result.split(' ') if len(word) > 1 and word not in stop_words]
positibe = negtive = middle = 0
for i in all_words:
pingfen = SnowNLP(i)
if pingfen.sentiments > 0.7:
positibe += 1
elif pingfen.sentiments < 0.3:
negtive += 1
else:
middle += 1
print(positibe, negtive, middle)
'''
1471 568 4241
'''
最后想说的是
出轨是一种本能,但忠诚是一种选择。
我们行走在世间,总会遇到更好看的人、更优秀的人、更年轻的人,可是这个世界上有太多人了,我们怎么能保证这个一定是最后一个?
遇到的新人或许更好,但好的有限。为了这一点点新鲜感,就要去换一个伴侣,就要背信弃义去做各种龌龊的事情,这样和禽兽又有什么区别?
人如果一味放纵自己的欲望,不仅仅是身败名裂、失去婚姻和家庭,还会走向自我灭亡的道路。
推荐阅读
评论