【爬虫实战】评论爬取及词频统计详解

本文详细讲解了如何使用Python进行评论爬取,包括请求评论数据、数据清洗、分词、停用词处理、绘制统计表和词云。通过分析评论页面的请求机制,不断请求获取所有评论,然后利用正则表达式清洗数据,使用jieba进行分词,并统计词频。最后,通过matplotlib绘制统计表和使用词云展示结果。文章还探讨了如何优化分词过程和存储词频统计,以提高效率。
摘要由CSDN通过智能技术生成

前言

本项目来自Baidu AI Studio相关python课程。

aqy评论爬取

请求数据

首先分析想要爬取的页面评论。
在这里插入图片描述
在每次点击获取评论时,都会有一个get_comments的请求,请求中的url就是我们所需要的请求链接。
https://sns-comment.iqiyi.com/v3/comment/get_comments.action?agent_type=118&agent_version=9.11.5&authcookie=null&business_type=17&content_id=15472234400&hot_size=0&page=&page_size=20&types=time&last_id=241192681621
该页面请求评论的机制是,通过获取last_id,最后一个显示的评论,来获取之后的评论,只要不断更改last_id不断请求,就能拉取所有评论。

思路就有了,不断请求获取评论的URL,获取评论。
这里使用的是Session建立一个会话,不建立其实也没问题。


def getMovieinfo(url):
    '''
    请求爱奇艺评论接口,返回response信息
    参数  url: 评论的url
    return: response信息
    '''
    session = requests.Session()
    headers = {
   
        "User-Agent": "Mozilla/5.0", #请求来源设置
        "Accept": "application/json",# 客户端能接受的内容
        "Referer": "https://www.iqiyi.com/v_19ryhrmpcc.html#curid=15472234400_2d7e859019eb31bf551d6a90e8daedcf",
        "Origin": "http://m.iqiyi.com", # 指明请求来自于哪个站点
        "Host": "sns-comment.iqiyi.com",#请求web服务器域名地址
        "Connection": "keep-alive", # 保持连接
        "Accapt-Language": "en-Us,en;q=0.9,zh-CN;q=0.8,zh;q=0.7,zh-Tw;q=0.6", # 优先显示的语言
        "Accept-Encoding":"gzip, deflate" # 支持的返回压缩格式
    }
    response = session.get(url, headers=headers)
    if response.status_code == 200: # 响应成功
         return response.text
    return None

思路:输入分析得到的评论获取url,使用getMovieinfo得到json格式的响应,json格式数据转换为字典,可以通过 [‘data’][‘comments’] 标签把评论部分提取出来,content是其中的文字部分。
comments中包含很多条评论信息,每次循环VAL中是一条评论信息,如果这条评论信息中有中文和lastID,那么就是一条有效信息,把cantent部分提取出来,lastID也提取为下一步的请求做准备。

def saveMoviernforoFile(lastId,arr):

    # '''
    # 解析json数据,获取评论
    # 参数lastrd:最后一条评论ID arx:存故文本的1ist
    # return:新的lastrd
    # '''

    url="https://sns-comment.iqiyi.com/v3/comment/get_comments.action?agent_type=118&agent_version=9.11.5&authcookie=null&business_type=17&content_id=15472234400&hot_size=0&page=&page_size=20&types=time&last_id="
    url+=str(lastId)
    responseTxt=getMovieinfo(url)
    responseJson=json.loads(responseTxt)
    comments=responseJson['data']['comments']
    for val in c
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值