如何基于Python爬虫爬取美团酒店信息


Posted in Python onNovember 03, 2020

一、分析网页

网站的页面是 JavaScript 渲染而成的,我们所看到的内容都是网页加载后又执行了JavaScript代码之后才呈现出来的,因此这些数据并不存在于原始 HTML 代码中,而 requests 仅仅抓取的是原始 HTML 代码。抓取这种类型网站的页面数据,解决方案如下:

分析 Ajax,很多数据可能是经过 Ajax 请求时候获取的,所以可以分析其接口。

如何基于Python爬虫爬取美团酒店信息

在XHR里可以找到,Request URL有几个关键参数,uuid和cityId是城市标识,offset偏移量可以控制翻页,分析网页发现,第x页的offset为:(x-1)*20,limit表示每页有20条信息,startDay和endDay为当前的日期。

如何基于Python爬虫爬取美团酒店信息

在Preview里可以找到每页的20条信息

如何基于Python爬虫爬取美团酒店信息

模拟JavaScript渲染过程,直接抓取渲染后的结果。

selenium和pyppeteer爬虫就是用的这种方法

二、爬取酒店信息

logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s: %(message)s')
url = "https://ihotel.meituan.com/hbsearch/HotelSearch"
headers = {
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Safari/537.36",
  "Referer": "https://hotel.meituan.com/chengdu"
}
wb = openpyxl.Workbook()
sheet = wb.active
sheet.append(['酒店名称', '酒店地址', '酒店类型', '最低价', '评价', '评论数', '经度', '纬度'])


def hotel_data(x):
  data = {
    'utm_medium': 'pc',
    'version_name': 999.9,
    'cateId': 20,
    'attr_28': 129,
    'uuid': '5D4E443EC83DDD49B73F317921EAE16C7B492A634A67FA261773890F730A5932@1600263777783',
    'cityId': 59,
    'offset': x * 20,
    'limit': 20,
    'startDay': 20200916,
    'endDay': 20200916,
    'q': '', 'sort': 'defaults',
    'X-FOR-WITH': '47zbBAV+k1e7QrnKt4lEVXrmtOE9w2OpFfGsKf539CDdXIw4r2V/qICcWVeNACGHWNbD6iL4huPyRVdkNJJwR6dqcoQMyzjUE3cQGWr6YZOwANQOlCSrZ7m1+aahwcnh/dTfaJLMZfxWaJQEISBuKbiMgDC8Vr4eaeWiYASkLl0ByB96MOUz7gfjUTbhlV0ZXvZ/ucwNcK3zxTQjmoBINsAY4HwpKQLpOV2IqV1CtPg=',
  }
  res = requests.get(url, headers=headers, params=data)
  time.sleep(random.randint(1, 3))
  results = json.loads(res.text)['data']['searchresult']
  for con in results:
    name = con['name']       # 酒店名称
    addr = con['addr']       # 酒店地址
    star = con['hotelStar']     # 酒店类型
    price = con['lowestPrice']   # 最低价
    scoreIntro = con['scoreIntro'] # 评价
    comments = con['commentsCountDesc'] # 评论数
    lng, lat = con['lng'], con['lat']  # 经纬度
    data = [name, addr, star, price, scoreIntro, comments, lng, lat]
    sheet.append(data)
    logging.info(data)

程序运行成功,酒店信息保存到了Excel。

如何基于Python爬虫爬取美团酒店信息

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
将Python代码打包为jar软件的简单方法
Aug 04 Python
pycharm设置注释颜色的方法
May 23 Python
python 使用 requests 模块发送http请求 的方法
Dec 09 Python
python 删除字符串中连续多个空格并保留一个的方法
Dec 22 Python
Pandas统计重复的列里面的值方法
Jan 30 Python
对python 多线程中的守护线程与join的用法详解
Feb 18 Python
python视频按帧截取图片工具
Jul 23 Python
python实现随机加减法生成器
Feb 24 Python
Python sklearn库实现PCA教程(以鸢尾花分类为例)
Feb 24 Python
Python 实现定积分与二重定积分的操作
May 26 Python
刚学完怎么用Python实现定时任务,转头就跑去撩妹!
Jun 05 Python
Python pandas读取CSV文件的注意事项(适合新手)
Jun 20 Python
python import 上级目录的导入
Nov 03 #Python
详解Python利用configparser对配置文件进行读写操作
Nov 03 #Python
Python抓包并解析json爬虫的完整实例代码
Nov 03 #Python
python中not、and和or的优先级与详细用法介绍
Nov 03 #Python
如何基于Python按行合并两个txt
Nov 03 #Python
Python txt文件如何转换成字典
Nov 03 #Python
Python headers请求头如何实现快速添加
Nov 03 #Python
You might like
PHP网站提速三大“软”招
2006/10/09 PHP
PR值查询 | PageRank 查询
2006/12/20 PHP
php扩展开发入门demo示例
2019/09/23 PHP
Prototype Class对象学习
2009/07/19 Javascript
js实现拖拽 闭包函数详细介绍
2012/11/25 Javascript
javascript禁用Tab键脚本实例
2013/11/22 Javascript
为jQuery添加Webkit的触摸的方法分享
2014/02/02 Javascript
[原创]jQuery常用的4种加载方式分析
2016/07/25 Javascript
AngularJS实现在ng-Options加上index的解决方法
2016/11/03 Javascript
基于JavaScript实现Tab选项卡切换效果
2016/11/24 Javascript
jQuery扩展+xml实现表单验证功能的方法
2016/12/25 Javascript
vue 使用Jade模板写html,stylus写css的方法
2018/02/23 Javascript
nvm、nrm、npm 安装和使用详解(小结)
2019/01/17 Javascript
jquery+ajax实现上传图片并显示上传进度功能【附php后台接收】
2019/06/06 jQuery
Element InputNumber计数器的使用方法
2020/07/27 Javascript
vue动态合并单元格并添加小计合计功能示例
2020/11/26 Vue.js
Python中的FTP通信模块ftplib的用法整理
2016/07/08 Python
win7上python2.7连接mysql数据库的方法
2017/01/14 Python
Python 基础教程之包和类的用法
2017/02/23 Python
详解python里使用正则表达式的全匹配功能
2017/10/19 Python
python 划分数据集为训练集和测试集的方法
2018/12/11 Python
pyinstaller参数介绍以及总结详解
2019/07/12 Python
Python虚拟环境venv用法详解
2020/05/25 Python
推荐10个CSS3 制作的创意下拉菜单效果
2014/02/11 HTML / CSS
使用Html5多媒体实现微信语音功能
2019/07/26 HTML / CSS
Farfetch阿联酋:奢侈品牌时尚购物平台
2019/07/26 全球购物
药学专业大学生自荐信
2013/09/28 职场文书
单位实习证明怎么写
2014/01/17 职场文书
商务英语广告词大全
2014/03/18 职场文书
售房协议书
2014/08/19 职场文书
2014年班务工作总结
2014/12/02 职场文书
2014年企业党支部工作总结
2014/12/04 职场文书
2016年中学法制宣传日活动总结
2016/04/01 职场文书
Go语言切片前或中间插入项与内置copy()函数详解
2021/04/27 Golang
Java界面编程实现界面跳转
2022/06/16 Java/Android
Python可视化神器pyecharts绘制地理图表
2022/07/07 Python