多城市批量爬取:读取city.csv中的城市 ID 列表,自动循环爬取全国多个城市酒店数据✅ 20 + 字段全覆盖:包含酒店基础信息、评分详情、价格信息、房型数据等核心维度,数据维度超全面:

  • 基础信息:酒店 ID、名称、类型、星级、城市、地址、图片 URL
  • 评分数据:好评分、好评数、评论描述、卫生 / 设施 / 环境 / 服务分项评分、评论标签
  • 价格房型:房型名称、房型 ID、原价、优惠价
  • 分类信息:酒店种类、所属城市

✅ 稳定可靠

  • 内置异常捕获机制,HTTP 错误、请求超时自动容错,避免爬虫中断
  • 完整 Cookie + 请求头配置,模拟浏览器访问,降低反爬风险
  • 自动创建 CSV 文件,数据追加写入,避免重复生成

✅ 灵活可配置:支持调整入住 / 退房日期、每页数据量、排序方式等参数

核心实现

  1. 数据来源:调用携程酒店列表接口 fetchHotelList,POST 请求获取结构化 JSON 数据
  2. 城市遍历:从city.csv读取城市 ID 和名称,循环切换目标城市爬取
  3. 数据解析:精准提取 JSON 中的 20 + 字段,自动处理数据格式(如去除价格符号、逗号)
  4. 持久化存储:自动创建hotel.csv,逐条追加写入爬取数据,确保数据不丢失
  5. 异常处理:捕获 HTTP 错误、请求超时、数据解析异常,保证爬虫稳定性

使用说明

  1. 安装依赖:pip install requests
  2. 准备文件:
    • 城市列表:city.csv(需包含两列:城市 ID、城市名称,首行为表头)
    • 脚本同级目录运行,自动生成hotel.csv结果文件
  3. 自定义参数调整:
    • 日期配置:修改checkInDate(入住日期)、checkOutDate(退房日期)
    • 分页设置:调整pageIndex(起始页码)、pageSize(每页酒店数量,默认 10 条)
    • 排序方式:修改filterstype:17value(1 = 欢迎度排序,可按需更换)
    • 城市范围:编辑city.
    • csv,添加 / 删除目标城市 ID 和名称
              for temp in temps:
                  hotelId = temp['hotelInfo']['summary']['hotelId']
                  commentScore = temp['hotelInfo']['commentInfo']['commentScore']  #好评分
                  commenterNumber = temp['hotelInfo']['commentInfo']['commenterNumber'].replace(',','').replace('条点评','').strip() #好评分
                  commentDescription = temp['hotelInfo']['commentInfo']['commentDescription'] #评论描述
                  weishengRating = temp['hotelInfo']['commentInfo']['subScore'][0]['scoreAvg']   #卫生评分
                  shesiRating = temp['hotelInfo']['commentInfo']['subScore'][1]['scoreAvg']  #设施评分
                  huanjinRating = temp['hotelInfo']['commentInfo']['subScore'][2]['scoreAvg']   #环境评分
                  fuwuRating = temp['hotelInfo']['commentInfo']['subScore'][3]['scoreAvg']   #服务评分
                  tagTitle = temp['hotelInfo']['commentInfo']['oneSentenceComment'][0]['tagTitle']  #评论标签
                  name = temp['hotelInfo']['nameInfo']['name'] #酒店名称
                  hotelType = temp['hotelInfo']['summary']['hotelType'] #酒店类型
                  physicsName= temp['roomInfo'][0]['summary']['saleRoomName']  #房型
                  deletePrice = temp['roomInfo'][0]['priceInfo']['deletePrice'] #原价
                  displayPrice =temp['roomInfo'][0]['priceInfo']['displayPrice'].replace('¥','').strip() #优惠价
                  roomId = temp['roomInfo'][0]['summary']['roomId'] #房型id
                  cityName = temp['hotelInfo']['positionInfo']['cityName']  #城市
                  address =  cityName + temp['hotelInfo']['positionInfo']['address'] #地点
                  categoryName = temp['hotelInfo']['hotelCategory']['categoryName'] #种类
                  imgUrl = temp['hotelInfo']['hotelImages']['multiImgs'][0]['url']  #图片链接
                  hotelStar = temp['hotelInfo']['hotelStar']['star']  #星级

 

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐