前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python带你看不一样的《青春有你2》小姐姐之评论爬取

Python带你看不一样的《青春有你2》小姐姐之评论爬取

作者头像
极简小课
发布2022-06-27 14:08:15
4120
发布2022-06-27 14:08:15
举报
文章被收录于专栏:极简小课极简小课

本篇文章开始我们爬取爱奇艺上《青春有你2》下面的评论内容,进行词频统计并可视化,然后制作词云来展示最关心的问题。

本篇文章,我们先来爬取评论数据,并进行预处理,下篇文章我们使用处理好的数据进行词频统计和可视化,以及制作词云。

我们先来看下步骤:

1. 爬取爱奇艺《青春有你2》评论数据,爬取评论条数不能少于1000条

2. 数据预处理:清理清洗评论中的特殊符号及表情符,并保存为txt文档

下面我们就来一步一步实现爬取数据。

1

爬取爱奇艺《青春有你2》评论数据

我们以第22期为例在浏览器打开网址https://www.iqiyi.com/v_19rxwechv0.html,选择第22期下的视频,然后按F12打开调试工具,找到评论位置,发现我们需要去点"查看更多评论"去显示下20条评论,如下图,当点击后,会有个GET请求发出,我们只需需要去构造这个网址,就可以得到所有评论。

网址中?后面的一般都是参数,所以我们只需要用https://sns-comment.iqiyi.com/v3/comment/get_comments.action?这个网址加上需要的参数构造完整的网址就可以了。

爬取评论内容代码:

代码语言:javascript
复制
import requests
import json
import re
代码语言:javascript
复制
# 请求爱奇艺评论接口,返回response信息
def get_movie_info(last_id):
    """
   请求爱奇艺评论接口,返回response信息
   参数  last_id: 评论翻页
   :return: response信息
   """

    headers = {
        "Host": "sns-comment.iqiyi.com",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0",
        "Accept": "*/*",
        "Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",
        "Accept-Encoding": "gzip, deflate, br",
        "Connection": "keep-alive",
        "Referer": "https://www.iqiyi.com/v_19ryfkiv8w.html",
        "DNT": "1"
    }
    # content_id:视频ID
    # last_id:控制评论翻页
    url = "https://sns-comment.iqiyi.com/v3/comment/get_comments.action?"

    params = {
        "agent_type": "118",
        "agent_version": "9.11.5",
        "authcookie": "null",
        "business_type": "17",
        "content_id": "16361088000",
        "hot_size": "0",
        "last_id": last_id,
        "page": "",
        "page_size": "20",
        "types": "time"
    }

    for key, value in params.items():
        url = url + key + "=" + value + "&"
    r = requests.get(url, headers=headers)
    # print(r.text)
    if r.status_code == 200:
        return r.text
    return None
 
    
 def save_movie_info_to_file(last_id, arr):
    """
   解析json数据,获取评论
   参数  last_id:最后一条评论ID  arr:存放文本的list
   :return: 新的last_id
   """
    response_text = get_movie_info(last_id)
    response_json = json.loads(response_text)
    comments = response_json["data"]["comments"]
    if comments:
        for comment in comments:
            if "content" in comment.keys():
                arr.append(comment['content'])
        last_id = str(comment["id"])

    return last_id

2

对评论内容数据清洗,保存为txt文件

我们把上面爬取的评论内容进行清洗,去除特殊字符和表情,保存为content.txt文件

代码语言:javascript
复制
def filter_str(des_str, res_tr=''):
    """
    过滤除中英文及数字以外的其他字符
    """
    res = re.compile("[^\u4e00-\u9fa5^a-z^A-Z^0-9]")
    return res.sub(res_tr, des_str)


def filter_emoji(des_str, res_tr=''):
    """过滤表情"""
    try:
        res = re.compile(u'[\U00010000-\U0010ffff]')
    except re.error:
        res = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
    return res.sub(res_tr, des_str)


def clear_special_char(arr):
    """
    正则处理特殊字符
    参数 arr:原文本, list格式
    return: 清除后的文本
    """

    new_arr = []
    for content in arr:
        if content:
            content = filter_str(content)
            content = filter_emoji(content)
            # print(content)
            with open("content.txt", "a") as f:
                f.write(content + "\n")
            new_arr.append(content)

    return new_arr

3

我们在主函数中实现完整逻辑

代码语言:javascript
复制
if __name__ == "__main__":

    org_last_id = "245317717421"
    comment_list = []
    while org_last_id != "":
        new_last_id = save_movie_info_to_file(org_last_id, comment_list)
        if new_last_id == org_last_id:
            break
        org_last_id = new_last_id
    # print(comment_list)
    
    # 清洗数据,去除特殊字符和表情符,并保存为txt文档
    new_comment_list = clear_special_char(comment_list)
    # print(new_comment_list)

至此,我们得到了所有评论信息并保存了下来,看一下我们保存的结果,评论内容保存在content.txt里面

下一篇我们将用这些信息去做一些分析,进行词频统计并可视化展示,制作词云,并利用第三方模块进行内容审核。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 极简小课 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档