一、背景分析

1.1 开发背景

你是否想一键获取携程某景点下的评论,收集完之后可以去分析,可以去阅读?

我用Python 写了一个携程景点评论爬虫,可以一键爬取全部数据。

1.2 数据截图

 

字段:评论人,评论时间,评论内容,ip属地,评分。

主要的字段是这几个,后续拿到这些数据可以做很多数据分析。

二、主要技术

软件全部模块采用python语言开发,主要用到的库如下:

import requests
import pandas as pd
import time

携程景点的评论没有反爬,也没有很复杂。

部分核心代码展示:

for id in ids:  # 遍历景点
    for page in range(1,35):  # 分页控制(1-34页)
        json_data = {
        'arg': {
            'channelType': 2,
            'collapseType': 0,
            'commentTagId': 0,
            'pageIndex':page,
            'pageSize': 10,
            'poiId': id,
            'sourceType': 3,
            'sortType': 1,
            'starType': 0,
        },
        'head': {
            'cid': '09031025312449459187',
            'ctok': '',
            'cver': '1.0',
            'lang': '01',
            'sid': '8888',
            'syscode': '09',
            'auth': '',
            'xsid': '',
            'extension': [],
        },
    }  # 构造请求体

        response = requests.post(
            'https://m.ctrip.com/restapi/soa2/13444/json/getCommentCollapseList',
            params=params,
            # cookies=cookies,
            headers=headers,
            json=json_data,
        )  # 发送POST请求
        time.sleep(2)  # 请求间隔
try:
    sj = response.json()['result']['items']  # 解析JSON响应

    for i in sj:  # 遍历单页评论
        dic={}
        try:
          dic['评论人'] = i.get("userInfo").get("userNick")
        except:
          dic['评论人'] = '匿名'
        dic['评论时间'] = i.get("publishTypeTag").split(' ')[0]
        dic['评论内容'] = i.get("content")
        print(i.get("content"))
        dic['IP属地'] = i.get("ipLocatedName")
        dic['评分'] = i.get("score")
        dic['tags'] = i.get("recommendItems")
        dic['是否有帮助'] = i.get("usefulCount")
        dic['keywords'] = id
        lst.append(dic)  # 存入列表

整体流程说明:

  1. 初始化配置

    :设置爬虫基础环境

  2. 模拟登录

    :通过请求头伪装浏览器

  3. 分页抓取

    :按景点+页码双重遍历

  4. 数据解析

    :提取结构化评论信息

  5. 持久化存储

    :导出为Excel文件

  6. 反爬处理

    :请求间隔+异常捕获机制

三、景点id如何获取

比如说我们爬取东方明珠的景点评论。

 

首先:打开开发者工具,点击网络。接着拉到最下边评论,点击下一页,我们会发现出来了许多接口。

 

找到getComment...这个接口,点击进去,我们需要的是这个poiID后边的参数,这个就代表东方明珠了。

 

接着把此ID填入代码里即可运行。

注意这个只能爬取网页版可见的3000条,若想要爬取全部的评论数据,就需要app相关的进一步的爬虫了。

四、说明

    运行前需更换最新cookie。 附完整视频讲解:https://www.bilibili.com/video/BV1bnzFBjEk8/   

    以上就是本次的全部内容,大家有需要的话可以在公重号获取,名字与此账号同名,欢迎大家一起交流学习。

 

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐