您好我是iFeng的小屋一枚4年程序猿。一、爬取目标很多做市场调研或出行规划的朋友都想深入了解某家酒店的真实口碑。但携程评论页翻来翻去很麻烦而且酒店的回复内容往往藏在折叠层里手工复制太累。所以我写了这个携程酒店评论爬虫它能根据酒店ID一键抓取指定页数的评论获取每条评论的正文、评分、时间、用户名、点赞数、房型、出行类型自动提取酒店的回复内容包括回复时间使用多线程可调并发数加速同时控制请求频率所有数据直接保存为Excel规整好用目前是源码格式还没有封装成软件如果想要软件的我后续开发一个软件版本的。二、展示爬取结果话不多说先看成果。爬取结果包含以下字段字段酒店id正文评分评论时间入住时间用户名评论点赞量评论等级房间类型名称旅游类型回复者回复内容回复时间。字段齐全可作为后续研究分析使用。三、原理讲解打开携程酒店详情页按F12进入开发者工具翻看评论页找到评论数据的接口。发现是restapi/soa2/33278/getHotelCommentListPOST请求。接口请求体是JSON格式包含hotelId酒店ID、pageIndex页码、pageSize每页条数、orderBy排序方式等参数。用requests模拟这个POST请求带上必要的Headers就能拿到JSON数据。解析JSON中的commentList提取每条评论的字段。特别注意feedbackList里藏着酒店的回复内容。最后用pandas把数据存成Excel。四、爬虫代码讲解导入库import requests import json import time import pandas as pd from concurrent.futures import ThreadPoolExecutor3.1 核心思路与配置需要两个关键参数酒店ID和要爬的页数。酒店ID可以从URL中获取比如https://hotels.ctrip.com/hotels/878902.html878902就是酒店ID。为了方便使用我直接把酒店ID和页数写在脚本末尾你也可以改成input输入。python运行3.2 关键步骤构造请求与解析数据这是爬虫的核心POST请求的构造必须准确def fetchComments(hotelId, pageIndex): url https://m.ctrip.com/restapi/soa2/33278/getHotelCommentList headers { Content-type: application/json, Origin: https://hotels.ctrip.com, Referer: https://hotels.ctrip.com, user-agent: Mozilla/5.0... } ... r requests.post(url, jsonformData, headersheaders) data r.json() comment_list data.get(data, {}).get(commentList, []) # ... 解析每条评论3.3 关键步骤多线程抓取虽然单线程也能跑但多线程能让速度翻倍但要控制并发数别把网站搞崩了def fetchHotelComments(hotelId, numPages10): all_comments [] def fetch_page(pageIndex): return fetchComments(hotelId, pageIndex) with ThreadPoolExecutor(max_workers3) as executor: # 最多3个线程 results executor.map(fetch_page, range(1, numPages 1)) for page_comments in results: all_comments.extend(page_comments) time.sleep(1) # 每页间隔1秒太猛容易被封 return all_comments四、如何运行安装依赖pip install requests pandas openpyxl修改参数在if __name__ __main__:下面把hotel_id换成你想爬的酒店ID把total_pages改成你要的页数每页10条。运行脚本直接执行等待结果。查看结果当前目录下会生成comments_酒店ID.xlsx文件。五、说明酒店ID获取在携程酒店详情页的URL里比如https://hotels.ctrip.com/hotels/878902.html数字部分就是酒店ID。翻页逻辑代码目前只爬指定页数如果你需要爬全部评论可以先通过第一页的响应获取总条数再计算总页数然后循环。为简化示例这里只演示指定页数。请求频率代码中已经加入了time.sleep请勿修改太快以免被网站封IP。完整源码上述代码为核心模块完整可运行的源码包含更详细的异常处理和注释已打包整理。需要本文完整可运行Python源码的小伙伴我都放在了与此号同名的公主号里大家自行获取。持续分享Python干货中更多爬虫源码干货请前往主页查看~