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

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

古人说:成功的关键在于坚持不懈,所以小编晚上跟着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协议和法律法规,不进行恶意爬取和侵犯隐私等行为。

相关文章
|
1月前
|
搜索推荐 API 定位技术
解锁携程美食与景点数据接口:打造个性化旅行体验的秘密武器
携程API助您探索旅游信息,虽无专门“美食列表”接口,但可通过景点详情接口获取周边美食推荐。结合地图或餐饮API,丰富美食数据一手掌握。景点列表接口帮助搜索景点详情,包括名称、位置等。使用流程包括注册账号、获取密钥、构造请求及解析响应数据。记得查阅最新文档,确保合规使用。体验API:[链接]。
|
2月前
|
小程序 搜索推荐 定位技术
解锁景区导览小程序,让每站旅程都精彩纷呈
【景区导览小程序】应对导览难、信息缺等挑战,提供电子地图、AR导航、个性化路线、智能讲解、景点打卡及AR互动等六项功能,提升游客游览效率与乐趣,促进景区形象升级,实现智慧旅游。游客轻松规划行程,享受沉浸式导航,通过互动分享带动景区流量增长。
71 0
解锁景区导览小程序,让每站旅程都精彩纷呈
|
4月前
|
安全
数据感知游客的森林公园游憩需求
数据感知游客的森林公园游憩需求
|
4月前
|
运维 安全 容灾
亿格名片 | 小红书:「红线数据不外泄」准则下的数据安全“种草”攻略
小红书的安全是紧贴业务类型与发展阶段演进开展的,从内容安全再到技术安全、网络安全等方面不断迈进。区别于传统围绕防止黑客入侵的安全建设思路,保障数据安全以及管理访问控制是小红书高度关注的要点,防止红线数据外泄是终态目标。当下,随着数据安全等政策法规的落地,数据安全成了备受关注的领域,在实现我们防护红线数据不外泄的核心目标,且保障员工工作效率及体验,我们选择性地舍去了传统云桌面、沙箱之类比较“重”的工具。基于此,共创落地零信任数据安全体系,集成至内部安全办公系统中,替代3、4个安全软件,实现最小权限访问以及数据分类分级、流转、分发等全方位管控,这样既有效保护红线数据、又不影响员工效率与体验。
亿格名片 | 小红书:「红线数据不外泄」准则下的数据安全“种草”攻略
阿云漫画 | 淘宝“2021年度十大商品”,你get过几件?
编者按: 2021年还有29小时30分钟就要结束了,该用什么记录这一年?继各大平台陆续发布年度关键词、热搜、弹幕之后,国民电商平台淘宝也发布了一份特殊的年度榜单。网友看完表示,“这一年的人间烟火味都在这了。”
179 0
J3
|
前端开发 数据库
快捷餐饮之店家后台厨艺秀实现
快捷餐饮之店家后台厨艺秀实现
J3
123 0
快捷餐饮之店家后台厨艺秀实现
|
安全
高校招生说明网页被挂马 考生浏览需谨慎
据瑞星“云安全”系统统计,本周瑞星共截获了140万个挂马网址。从被截获的挂马网址来看,本周挂马网站矛头主要对准了网络游戏、软件下载和高校招生网站,这些被挂马网站中很多都是互联网上的热门网站。随着高考的结束,一些高校的报名招生页面也被植入了病毒。
1070 0
|
新零售 监控 安全
华住酒店用户数据疑被泄露,企业数据自保攻略有二
近日,网曝疑似华住集团旗下连锁酒店用户数据在暗网售卖。从卖家发布内容看,数据包含华住旗下汉庭、美爵、禧玥、漫心、诺富特、美居、CitiGo、桔子、全季、星程、宜必思、怡莱、海友等酒店。泄露的信息包括华住官网注册资料、酒店入住登记的身份信息及酒店开房记录,住客姓名、手机号、邮箱、身份证号、登录账号密码等。
2564 0