ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

爬取林丹和赵雅淇的微博评论,看看网友都说了些什么

2021-06-28 18:04:00  阅读:168  来源: 互联网

标签:word 取林丹 赵雅淇 微博 词云 words 所示 cloud


watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

7 月 4 日,林丹在微博上宣布了自己退役的消息,7 月 6 日,林丹出轨女主赵雅淇发文诉委屈,先简单看一下他们发的微博。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

对于他们的微博内容,这里不做评价,我们使用 Python 爬取他们所发微博下面的评论信息,看看网友都说了些什么。

爬取

爬取之前,先简单了解一下微博,微博主要有如下三种展示形式:

  • 网页版(http://weibo.com)
  • 手机端(http://m.weibo.cn)
  • 移动端(http://weibo.cn)

其中移动端爬取相对容易一些,这里我们就从移动端下手,首先在浏览器上输入 http://weibo.cn 打开,如下图所示:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

我们可以看到有一个搜索框,我们可以通过它来找人,以林丹为例,我们在搜索框输内入林丹之后点击找人按钮,就可以搜到林丹的微博了,如下图所示:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

我们点击其微博名进入微博主页,如下图所示:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

接着打开开发者工具并选择 Network,然后点击评论,如下图所示:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

因为评论内容较多,查看更多内容是需要翻页的,我们将页面向下拉,可以看到翻页按钮,我们点下页看一下其具体请求,如下图所示:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

上图中的 Request URL 中的 page 参数前面是固定的,page 是页号,爬取时我们需要用到的就是这个 URL,除此之外,我们还需要用到 cookie 和 user-agent 参数,在下面的 Request Headers 中就可找到,如下图所示:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

需要用的东西找齐了之后,我们就可以爬取评论了,主要代码实现如下:

# 爬取一页评论内容
def get_one_page(url):
    headers = {
        'User-agent' : '自己的User-agent',
        'Host' : 'weibo.cn',
        'Accept' : 'application/json, text/plain, */*',
        'Accept-Language' : 'zh-CN,zh;q=0.9',
        'Accept-Encoding' : 'gzip, deflate, br',
        'Cookie' : '自己的Cookie',
        'DNT' : '1',
        'Connection' : 'keep-alive'
    }
    # 获取网页 html
    response = requests.get(url, headers = headers, verify=False)
    # 爬取成功
    if response.status_code == 200:
        # 返回值为 html 文档,传入到解析函数当中
        return response.text
    return None

# 解析保存评论信息
def save_one_page(html):
    comments = re.findall('<span class="ctt">(.*?)</span>', html)
    for comment in comments[1:]:
        result = re.sub('<.*?>', '', comment)
        if '回复@' not in result:
            with open('ld_comment.txt', 'a+', encoding='utf-8') as fp:
                fp.write(result)

最终,我们将评论信息爬取后存到了 txt 文件中。

词云展示

接下来我们将网友评论信息做成词云看一下,词云之前我们也做过,这里不再多说,看一下主要的代码实现:

def jieba_():
    stop_words = []
    with open('stop_words.txt', 'r', encoding='utf-8') as f:
        lines = f.readlines()
        for line in lines:
            stop_words.append(line.strip())
    content = open('ld_comment.txt', 'rb').read()
    # jieba 分词
    word_list = jieba.cut(content)
    words = []
    for word in word_list:
        if word not in stop_words:
            words.append(word)
    global word_cloud
    # 用逗号隔开词语
    word_cloud = ','.join(words)

def cloud():
    # 打开词云背景图
    cloud_mask = np.array(Image.open('bg1.png'))
    # 定义词云的一些属性
    wc = WordCloud(
        # 背景图分割颜色为白色
        background_color='white',
        # 背景图样
        mask=cloud_mask,
        # 显示最大词数
        max_words=200,
        # 显示中文
        font_path='./fonts/simhei.ttf',
        # 最大尺寸
        max_font_size=40
    )
    global word_cloud
    # 词云函数
    x = wc.generate(word_cloud)
    # 生成词云图片
    image = x.to_image()
    # 展示词云图片
    image.show()
    # 保存词云图片
    wc.to_file('ld.png')

我们先来看一下用林丹微博评论生成的词云图,如下所示:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

再来看一下用赵雅淇微博评论生成的词云图,如下所示:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

最后,我们看一下林、赵的所有评论生成的词云图,如下所示:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

标签:word,取林丹,赵雅淇,微博,词云,words,所示,cloud
来源: https://blog.51cto.com/u_15283574/2952014

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有