如何基于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基于mysql实现的简单队列以及跨进程锁实例详解
Jul 07 Python
一个计算身份证号码校验位的Python小程序
Aug 15 Python
Python中将字典转换为列表的方法
Sep 21 Python
解决pandas 作图无法显示中文的问题
May 24 Python
python实现在图片上画特定大小角度矩形框
Oct 24 Python
Django 接收Post请求数据,并保存到数据库的实现方法
Jul 12 Python
python多线程+代理池爬取天天基金网、股票数据过程解析
Aug 13 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
Oct 10 Python
Python PyInstaller库基本使用方法分析
Dec 12 Python
如何利用Python动态模拟太阳系运转
Sep 04 Python
Python-openpyxl表格读取写入的案例详解
Nov 02 Python
用Python 执行cmd命令
Dec 18 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
图解上海144收音机
2021/03/02 无线电
php基于表单密码验证与HTTP验证用法实例
2015/01/06 PHP
PHP模板引擎Smarty内建函数foreach,foreachelse用法分析
2016/04/11 PHP
form自动提交实例讲解
2017/07/10 PHP
Yii2压缩PHP中模板代码的输出问题
2018/08/28 PHP
JavaScript DOM 学习第九章 选取范围的介绍
2010/02/19 Javascript
jquery 3D球状导航的文章分类
2010/07/06 Javascript
javascript 词法作用域和闭包分析说明
2010/08/12 Javascript
html dom节点操作(获取/修改/添加或删除)
2014/01/23 Javascript
jQuery实现数秒后自动提交form的方法
2015/03/05 Javascript
JQuery记住用户名密码实现下次自动登录功能
2015/04/27 Javascript
jquery Easyui快速开发总结
2015/08/20 Javascript
jquery组件WebUploader文件上传用法详解
2020/10/23 Javascript
jquery表单验证实例仿Toast提示效果
2017/03/03 Javascript
AngularJS的脏检查深入分析
2017/04/22 Javascript
vue中引用阿里字体图标的方法
2018/02/10 Javascript
详解React之父子组件传递和其它一些要点
2018/06/25 Javascript
Python实现字符串与数组相互转换功能示例
2017/09/22 Python
python编程实现12306的一个小爬虫实例
2017/12/27 Python
Python判断两个文件是否相同与两个文本进行相同项筛选的方法
2019/03/01 Python
Pytorch 实现冻结指定卷积层的参数
2020/01/06 Python
Pytorch 定义MyDatasets实现多通道分别输入不同数据方式
2020/01/15 Python
Python绘制组合图的示例
2020/09/18 Python
京东港澳售:京东直邮港澳台
2018/01/31 全球购物
澳大利亚百货公司:David Jones
2018/02/08 全球购物
迪卡侬印尼体育用品商店:Decathlon印尼
2020/03/11 全球购物
自考生自我鉴定范文
2013/10/01 职场文书
学前教育毕业生自荐信
2013/10/29 职场文书
员工试用期自我评价
2014/09/18 职场文书
信用卡工资证明范本
2014/10/17 职场文书
2015年酒店前台工作总结
2015/04/20 职场文书
2015年政风行风工作总结
2015/04/21 职场文书
2015年感恩母亲节活动方案
2015/05/04 职场文书
在K8s上部署Redis集群的方法步骤
2021/04/27 Redis
html form表单基础入门案例讲解
2021/07/21 HTML / CSS
postgresql之greenplum字符串去重拼接方式
2023/05/08 PostgreSQL