如何基于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实现的简单万年历例子分享
Apr 25 Python
python实现class对象转换成json/字典的方法
Mar 11 Python
Python性能提升之延迟初始化
Dec 04 Python
Python爬虫抓取代理IP并检验可用性的实例
May 07 Python
python 字典 按key值大小 倒序取值的实例
Jul 06 Python
python使用matplotlib画柱状图、散点图
Mar 18 Python
Python3.5文件读与写操作经典实例详解
May 01 Python
python NumPy ndarray二维数组 按照行列求平均实例
Nov 26 Python
numpy:np.newaxis 实现将行向量转换成列向量
Nov 30 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
Dec 31 Python
Python通过format函数格式化显示值
Oct 17 Python
Python爬虫之Selenium多窗口切换的实现
Dec 04 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
一个数据采集类
2007/02/14 PHP
xss防御之php利用httponly防xss攻击
2014/03/21 PHP
php将12小时制转换成24小时制的方法
2015/03/31 PHP
用PHP生成excel文件到指定目录
2015/06/22 PHP
php封装一个异常的处理类
2017/06/08 PHP
PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析
2017/07/03 PHP
自动生成文章摘要的代码[JavaScript 版本]
2007/03/20 Javascript
jQuery EasyUI API 中文文档 - Tree树使用介绍
2011/11/19 Javascript
jquery简单瀑布流实现原理及ie8下测试代码
2013/01/23 Javascript
jQuery简单实现banner图片切换
2014/01/02 Javascript
javaScript年份下拉列表框内容为当前年份及前后50年
2014/05/28 Javascript
微信JSSDK上传图片
2015/08/23 Javascript
Bootstrap每天必学之缩略图与警示窗
2015/11/29 Javascript
js数组方法reduce经典用法代码分享
2018/01/07 Javascript
JS中用EL表达式获取上下文参数值的方法
2018/03/28 Javascript
jQuery实现表单动态添加数据并提交的方法
2018/07/19 jQuery
Vue父子传递实例讲解
2020/02/14 Javascript
[01:08:00]Fnatic vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python操作摄像头截图实现远程监控的例子
2014/03/25 Python
Python3实现的字典、列表和json对象互转功能示例
2018/05/22 Python
实例讲解Python中浮点型的基本内容
2019/02/11 Python
Python FTP文件定时自动下载实现过程解析
2019/11/12 Python
调用其他python脚本文件里面的类和方法过程解析
2019/11/15 Python
中国跨镜手机配件批发在线商店:TVC-Mall
2019/08/20 全球购物
碧欧泉法国官网:Biotherm法国
2019/10/23 全球购物
物理专业大学生职业生涯规划书
2014/02/07 职场文书
医学生自我鉴定范文
2014/03/26 职场文书
二手房购房意向书范本
2014/04/01 职场文书
员工合理化建议书
2014/05/19 职场文书
中药学专业求职信
2014/05/31 职场文书
小学学习雷锋活动总结
2014/07/03 职场文书
警察群众路线对照检查材料思想汇报
2014/10/01 职场文书
教师创先争优承诺书
2015/04/27 职场文书
2015年教师业务工作总结
2015/05/26 职场文书
导游词之北京明十三陵
2019/10/28 职场文书
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
2021/04/13 Javascript