获取携程网站上指定景点的用户评论数据

简介: 获取携程网站上指定景点的用户评论数据

古人说:成功的关键在于坚持不懈,所以小编晚上跟着B站一起学习了,并写出了这篇文章,学习在于努力

本文获取的是携程旅游网站中不同景点的评论数据,

1.导入相应的模块

import requests
import json
import csv

2.定义postUrl变量为携程网站评论数据请求的URL。接着定义urls列表,包含不同景点的poiId和名称

postUrl = "https://m.ctrip.com/restapi/soa2/13444/json/getCommentCollapseList"
# 将景点poiId和名称添加到此处
urls = [
    ['76865', '星海广场'],
    ['75628', '棒棰岛'],
    ['75633', '大连森林动物园'],
    ['60514877', '三寰牧场'],
    ['75635', '劳动公园'],
    ['23035466', '东港音乐喷泉广场'],
    ['79494', '海之韵广场'],
    ['87618', '金石滩度假区'],
    ['87748', '滨海路'],
    ['87647', '滨海国家地质公园'],
    ['24845945', '莲花山观景台'],
    ['92196', '白玉山景区'],
    ['13301914', '大连天门山国家森林公园'],
]

3.遍历urls列表,对于每个景点,首先定义data_pre变量,包含评论数据请求的参数,其中poiId为当前景点的poiId

for id in urls:
    print("正在爬取景点:", id[1])
    # 通过返回值判断总评论数,每页9条,计算出总页数,对大于2000条的数据只爬取两千条
    data_pre = {
        "arg": {
            "channelType": 2,
            "collapseType": 0,
            "commentTagId": 0,
            "pageIndex": 1,
            "pageSize": 10,
            "poiId": id[0],
            "sourceType": 1,
            "sortType": 3,
            "starType": 0
        },
        "head": {
            "cid": "09031069112760102754",
            "ctok": "",
            "cver": "1.0",
            "lang": "01",
            "sid": "8888",
            "syscode": "09",
            "auth": "",
            "xsid": "",
            "extension": []
        }
    }

4.发送post请求获取该景点评论的总页数,将返回的数据解析为json格式,从中获取评论总数,计算出总页数total_page。如果总页数大于300,则将total_page设置为300。接着遍历1到total_page,对于每一页,定义data变量,包含评论数据请求的参数,其中pageIndex为当前页数。

 html = requests.post(postUrl, data=json.dumps(data_pre)).text
    html = json.loads(html)
    # 确定总页数总页数
    total_page = int(html['result']['totalCount'] / 10)
    if total_page > 300:
        total_page = 300
    # 遍历查询评论
    print("总页数:", total_page, "爬取中")

5.发送post请求获取评论数据,将返回的数据解析为json格式,从中获取每条评论的内容result,并将其保存到csv文件中。最后输出该景点的名称和爬取完成的提示信息。

 # 创建写入csv文件
    path = '景点数据.csv'
    xuhao = 0
    with open(path, 'w', newline='', encoding='utf-8') as f:
        file = csv.writer(f)
        file.writerow(['序号', '景区ID', '景区名称', '评论'])
        for page in range(1, int(total_page) + 1):
            data = {
                "arg": {
                    "channelType": 2,
                    "collapseType": 0,
                    "commentTagId": 0,
                    "pageIndex": page,
                    "pageSize": 10,
                    "poiId": id[0],
                    "sourceType": 1,
                    "sortType": 3,
                    "starType": 0
                },
                "head": {
                    "cid": "09031069112760102754",
                    "ctok": "",
                    "cver": "1.0",
                    "lang": "01",
                    "sid": "8888",
                    "syscode": "09",
                    "auth": "",
                    "xsid": "",
                    "extension": []
                }
            }
            html = requests.post(postUrl, data=json.dumps(data)).text
            html = json.loads(html)
            # 获取评论
            for j in range(10):
                result = html['result']['items'][j]['content']
                file.writerow([xuhao, id[0], id[1], result])
                print([xuhao, id[0], id[1], result])
                xuhao += 1
    print(id[1], "爬取完成")

常用的获取数据工具包括Scrapy、BeautifulSoup、Selenium等。Scrapy是一个Python编写的开源网络爬虫框架,可以快速高效地进行数据爬取,支持多线程、分布式爬取等功能。BeautifulSoup是一个Python库,可以快速解析HTML和XML文档,提取需要的信息。Selenium是一个自动化测试工具,可以模拟人类操作浏览器,对于一些需要登录或滑动验证码的网站爬取非常有用。

除了工具,还有一些常用的技巧可以提高数据爬取的效率。例如,设置合适的请求头可以避免被网站反爬虫机制拦截;使用代理IP可以避免频繁访问同一网站被封禁IP;使用多线程或异步IO可以提高爬取速度等等。同时,还需要注意遵守网站的robots协议和法律法规,不进行恶意爬取和侵犯隐私等行为。

相关文章
|
JSON JavaScript 定位技术
echarts:从github及其镜像下载china.js和china.json
echarts:从github及其镜像下载china.js和china.json
7778 0
|
6月前
|
消息中间件 NoSQL Kafka
聊聊场景题:百万人同时点赞怎么办?这个怎么回答
如今面试更重场景题,如“百万用户同时点赞”类问题,考察高并发下系统设计能力。重点在于流量削峰、数据一致、可用性与资源优化。核心思路:用Kafka削峰、Redis缓存状态与计数、异步批量同步数据库,实现高性能、高可用与最终一致性,兼顾体验与成本,体现技术选型与业务权衡能力。
269 1
|
8月前
|
机器学习/深度学习 监控 数据可视化
基于YOLOv8的打架斗殴暴力行为智能识别项目源码(目标检测)
本系统结合 YOLOv8检测模型 与 PyQt5界面工具,不仅提供完整训练流程,还支持自定义数据集训练,帮助用户快速搭建 开箱即用的打架斗殴行为识别系统。
1266 28
基于YOLOv8的打架斗殴暴力行为智能识别项目源码(目标检测)
|
6月前
|
存储 弹性计算 容灾
阿里云服务器优惠购买方法及自定义购买详细流程,新手入门必看
本文详解阿里云服务器ECS自定义购买全流程,涵盖付费模式、地域、实例规格、镜像、存储、网络、公网IP、安全组等配置选择,助新手快速入门。对比优惠活动与自定义购买优劣,提供实用选型建议,适合搭建网站及各类应用。
|
7月前
|
存储 数据采集 搜索推荐
Python+淘宝API:3步爬取10万条商品评论(附反爬破解技巧)
本文介绍淘宝商品评论爬取技术,涵盖环境配置、接口分析、反爬破解及数据存储。使用Python模拟请求,动态代理与签名绕过风控,结合Flask中转降低封禁风险,实现高效合规的数据采集,适用于竞品分析与用户画像构建。(238字)
1319 1
|
数据采集 人工智能 监控
40.8K star!让AI帮你读懂整个互联网:Crawl4AI开源爬虫工具深度解析
Crawl4AI 是2025年GitHub上备受瞩目的开源网络爬虫工具,专为AI时代设计。它不仅能抓取网页内容,还能理解页面语义结构,生成适配大语言模型的训练数据格式。上线半年获4万+星标,应用于1200+AI项目。其功能亮点包括智能内容提取引擎、AI就绪数据管道和企业级特性,支持动态页面处理、多语言识别及分布式部署。技术架构基于Python 3.10与Scrapy框架,性能卓越,适用于AI训练数据采集、行业情报监控等场景。相比Scrapy、BeautifulSoup等传统工具,Crawl4AI在动态页面支持、PDF解析和语义分块方面更具优势
4381 0
40.8K star!让AI帮你读懂整个互联网:Crawl4AI开源爬虫工具深度解析
|
数据采集 数据挖掘 Python
python爬虫去哪儿网上爬取旅游景点14万条,可以做大数据分析的数据基础
本文介绍了使用Python编写的爬虫程序,成功从去哪儿网上爬取了14万条旅游景点信息,为大数据分析提供了数据基础。
1474 1
|
9月前
|
数据采集 缓存 JSON
GitHub 开源爆款工具|MediaCrawler:程序员零门槛采集抖音/小红书/B站等社交评论,30K star 背后的场景实战揭秘!
MediaCrawler 是一个支持多平台的社交媒体数据爬虫工具,覆盖小红书、抖音、B站等主流平台,提供关键词/ID爬取、评论采集、登录态缓存、代理池等功能,结合 Playwright 实现浏览器模拟,降低逆向难度,适合内容运营、数据分析等场景,开源免费,使用简便。
4270 0
|
JSON API 数据格式
携程网获取景点列表 API 接口(携程 API 系列)
携程作为国内知名的在线旅游服务提供商,其景点列表API对接口功能、参数和返回格式进行了详细定义。该接口可获取景点基本信息(名称、地区、开放时间等),支持条件筛选查询(如按地区、评分、价格区间等)。接口返回JSON或XML格式数据,并设有调用限制以确保系统稳定性和数据安全。虽然携程未公开免费API,开发者可通过商务合作申请权限。以下为模拟Python请求示例,展示了如何使用该接口获取景点信息。 代码示例中,通过`requests.get()`发送GET请求,设置请求参数(如地区、门票价格等)和请求头(模拟浏览器访问),并处理响应数据。实际应用需替换为真实的接口URL,并遵循携程官方文档要求。
2975 0
|
JSON API 数据格式
携程API接口系列,酒店景点详情请求示例参考
携程API接口系列涵盖了酒店预订、机票预订、旅游度假产品预订、景点门票预订等多个领域,其中酒店和景点详情请求是较为常用的功能。以下提供酒店和景点详情请求的示例参考