当前位置: 首页 > 编程笔记 >

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

耿学义
2023-03-14
本文向大家介绍如何基于Python爬虫爬取美团酒店信息,包括了如何基于Python爬虫爬取美团酒店信息的使用技巧和注意事项,需要的朋友参考一下

一、分析网页

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

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

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

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

模拟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爬取淘宝商品的具体代码,供大家参考,具体内容如下 效果图: 更多内容请参考专题《python爬取功能汇总》进行学习。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍Python爬虫爬取美剧网站的实现代码,包括了Python爬虫爬取美剧网站的实现代码的使用技巧和注意事项,需要的朋友参考一下 一直有爱看美剧的习惯,一方面锻炼一下英语听力,一方面打发一下时间。之前是能在视频网站上面在线看的,可是自从广电总局的限制令之后,进口的美剧英剧等貌似就不在像以前一样同步更新了。但是,作为一个宅diao的我又怎甘心没剧追呢,所以网上随便查了一下就找到一个能用迅雷

  • 本文向大家介绍Python制作爬虫抓取美女图,包括了Python制作爬虫抓取美女图的使用技巧和注意事项,需要的朋友参考一下   作为一个新世纪有思想有文化有道德时刻准备着的屌丝男青年,在现在这样一个社会中,心疼我大慢播抵制大百度的前提下,没事儿上上网逛逛YY看看斗鱼翻翻美女图片那是必不可少的,可是美图虽多翻页费劲!今天我们就搞个爬虫把美图都给扒下来!本次实例有2个:煎蛋上的妹子图,某网站的rosi

  • 本文向大家介绍node.js爬虫爬取拉勾网职位信息,包括了node.js爬虫爬取拉勾网职位信息的使用技巧和注意事项,需要的朋友参考一下 简介 用node.js写了一个简单的小爬虫,用来爬取拉勾网上的招聘信息,共爬取了北京、上海、广州、深圳、杭州、西安、成都7个城市的数据,分别以前端、PHP、java、c++、python、Android、ios作为关键词进行爬取,爬到的数据以json格式储存到本地

  • 本文向大家介绍基于python爬虫数据处理(详解),包括了基于python爬虫数据处理(详解)的使用技巧和注意事项,需要的朋友参考一下 一、首先理解下面几个函数 设置变量 length()函数 char_length() replace() 函数 max() 函数 1.1、设置变量 set @变量名=值 1.2 、length()函数 char_length()函数区别 1.3、 replace(

  • 有的时候,当我们的爬虫程序完成了,并且在本地测试也没有问题,爬取了一段时间之后突然就发现报错无法抓取页面内容了。这个时候,我们很有可能是遇到了网站的反爬虫拦截。 我们知道,网站一方面想要爬虫爬取网站,比如让搜索引擎爬虫去爬取网站的内容,来增加网站的搜索排名。另一方面,由于网站的服务器资源有限,过多的非真实的用户对网站的大量访问,会增加运营成本和服务器负担。 因此,有些网站会设置一些反爬虫的措施。我