python爬虫获取微博吴某凡微博热评
2021-07-27 12:48:55
18次阅读
0个评论
最后修改时间:2021-07-27 12:57:51

2021年的七月,最大的瓜应该就是吴某凡了。

娱乐圈爆瓜,早已不是什么新鲜事,但吴某凡这个瓜,尤其的大!

事情是这样的,一位叫“都某竹”的大一女孩在微博爆料,称与吴某凡恋爱期间遭受冷暴力

并称吴某凡存在“选妃”及“诱骗”未成年女孩的行为

随后,又有多位自称和吴某凡有过关系牵扯的女孩纷纷晒出聊天记录,以佐证吴某凡的行径。

事实真是那样的吗?来看看1000000+网友是怎么说的?

目标确定

我们的目标就是这1000000+条吴某凡微博的下面的网友评论

看看他们是如何评价的 ?

需求分析


我们要获取的数据如有

用户id、作者名称、作者座右铭、发帖时间和发帖内容。

首先我们F12打开浏览器开发者模式:

找到我们的目标url:
https://m.weibo.cn/comments/hotflow?id=4660583661568436&mid=4660583661568436&max_id_type=0

还有防反爬参数headers

我们用浏览器打开链接,发现这是一个标准的json格式的数据集,我们所要的数据都在这个json数据里面


所以第一步,先获取这个json格式的数据集。


发送请求

目标很清楚了,接下来上代码:
<pre class="prettyprint lang-js"> url = 'https://m.weibo.cn/comments/hotflow?id=4660583661568436&mid=4660583661568436&max_id_type=0'
    print('当前url是:', url)
    headers = {
        'cookie': 'SUB=_2A25NyTOqDeRhGeVG7lAZ9S_PwjiIHXVvMl3irDV6PUJbktB-LVDmkW1NT7e8qozwK1pqWVKX_PsKk5dhdCyPXwW1; SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9WFGibRIp_iSfMUfmcr5kb295NHD95Q01h-E1h-pe0.XWs4DqcjLi--fi-2Xi-2Ni--fi-z7iKysi--Ri-8si-zXi--fi-88i-zce7tt; _T_WM=98961943286; MLOGIN=1; WEIBOCN_FROM=1110006030; XSRF-TOKEN=70a1e0; M_WEIBOCN_PARAMS=oid%3D4648381753067388%26luicode%3D20000061%26lfid%3D4648381753067388%26uicode%3D20000061%26fid%3D4648381753067388',
        'referer': 'https://m.weibo.cn/detail/4660583661568436',
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4573.0 Safari/537.36'
    }
    resp = requests.get(url, headers=headers).json()
    wb_info = resp['data']['data']
    print(wb_info)</pre>

解析页面

上一步已经成功模拟浏览器获取到了数据。

接下来就是如何在其中提取出我们的目标数据


    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']))  # 发帖内容
        
        print(user_id, author, auth_sign, rls_time, text)
        
        '''
        6414472816 三时王京 三夜两头刷你的微博 Jul-19-08:06:52 滚
        6556281551 金泰妍以律己 你担没拿过大赏还天天贬低大赏的别跟我说话 Jul-19-08:09:16 这文案不会想了一晚没睡吧吃惊
        3320924712 Lionright 我喜欢的人都是星星都是光 Jul-19-08:07:06 吐了
        1966108801 粥拾玖 美乐蒂想家 Jul-19-08:09:13 急了急了他急了
        6300343274 小小小镜子啊 生活是一场又一场  美好事物的追逐 Jul-19-08:08:53 滚出中国
        5776571462 削了皮的土豆炖肉 百事可乐 万事芬达 心情雪碧 一周七喜 Jul-19-08:07:21 你信么我不信太开心
        5041911786 Liekkas_w 夏天的风我永远记得 Jul-19-08:06:50 滚吧你
        2316414853 是傻瓜吗 正义必胜 Jul-19-08:17:02 好看的都在他床上难看的都在控评
        5737714811 爱吃酥脆虾饼D 🌫 Jul-19-08:11:56 签子我们相信你泪泪泪泪泪
        5366720146 第一眼的意中人  Jul-19-08:13:52 控评严重也就算了你特么自己也给那些说相信你的人点赞让在前排吐了二哈
        5599841983 今天呼吸了吗15 国家二级足球运动员 Jul-19-08:18:08 滚出中国吧
        3284861767 看银河捕捉星星 我不唱声嘶力竭的情歌 Jul-19-08:07:53 我们在
        6446391321 你奈我何-Kris- 我对你们所有人的态度取决于你对吴亦凡的态度。Jul-19-08:06:56 我们一直在心
        5225883987 啥也不是kym 看啥呢?我只是素丝。Jul-19-08:06:55 相信你
        '''

数据成功获取!


没事咱们来接着分析翻页。先从每一页的url开始。
https://m.weibo.cn/comments/hotflow?id=4660583661568436&mid=4660583661568436&max_id_type=0
https://m.weibo.cn/comments/hotflow?id=4660583661568436&mid=4660583661568436&max_id=27509545759071812&max_id_type=0
https://m.weibo.cn/comments/hotflow?id=4660583661568436&mid=4660583661568436&max_id=11396065415043588&max_id_type=0
https://m.weibo.cn/comments/hotflow?id=4660583661568436&mid=4660583661568436&max_id=5160872412930597&max_id_type=0

相信大家一眼就看出来了,从第二页开始,多了一个max_id的参数。

并且这个max_id是跟随页数随机变化的。

那现在问题就变成了如何获取max_id

通过第一页的链接获取到了第二页的max_id,

然后通过第二页的链接获取到第三页max_id以此类推,获取到全部数据......

之后接着把内容使用openpyxl保存到Excel文件中,如下图所示。

    ws = op.Workbook()
    wb = ws.create_sheet(index=0)
    wb.cell(row=1, column=1, value='用户id')
    wb.cell(row=1, column=2, value='作者名称')
    wb.cell(row=1, column=3, value='作者座右铭')
    wb.cell(row=1, column=4, value='发帖时间')
    wb.cell(row=1, column=5, value='发帖内容')
    count = 2
    wb.cell(row=count, column=1, value=user_id)
    wb.cell(row=count, column=2, value=author)
    wb.cell(row=count, column=3, value=auth_sign)
    wb.cell(row=count, column=4, value=rls_time)
    wb.cell(row=count, column=5, value=text)
    
    ws.save('666.xlsx')

先获取50页数据练练手

获取到的部分数据如下:

可视化展示

<pre class="prettyprint lang-js"> rcv_data = pd.read_excel('./666.xlsx')
  exist_col = rcv_data.dropna()  # 删除空行
  c_title = exist_col['发帖内容'].tolist()
  # 观影评论词云图
  wordlist = jieba.cut(''.join(c_title))
  result = ' '.join(wordlist)
  pic = 'img1.jpg'
  gen_stylecloud(text=result,
                  icon_name='fab fa-apple',
                  font_path='msyh.ttc',
                  background_color='white',
                  output_name=pic,
                  custom_stopwords=['你', '我', '的', '了', '在', '吧', '相信', '是', '也', '都', '不', '吗', '就', '这', '还', '说', '一个', '一直', '我们']
                   )
  print('绘图成功!') </pre>
收藏 0 0

登录 后评论。没有帐号? 注册 一个。

da123456

  • 0 回答
  • 0 粉丝
  • 0 关注