介绍
今天就跟大家聊聊有关基于Python爬虫实现爬取美团酒店信息,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
<强>一、分析网页强>
网站的页面是JavaScript渲染而成的,我们所看到的内容都是网页加载后又执行了JavaScript代码之后才呈现出来的,因此这些数据并不存在于原始HTML代码中,而请求仅仅抓取的是原始HTML代码。抓取这种类型网站的页面数据,解决方案如下:
分析Ajax,很多数据可能是经过Ajax请求时候获取的,所以可以分析其接口。
在XHR里可以找到,请求URL有几个关键参数,uuid和cityId是城市标识,抵消偏移量可以控制翻页,分析网页发现,第x页的偏移量为:(x - 1) * 20,限制表示每页有20条信息,startDay和endDay为当前的日期。
在预览里可以找到每页的20条信息
模拟JavaScript渲染过程,直接抓取渲染后的结果。
硒和pyppeteer爬虫就是用的这种方法
<强>二,爬取酒店信息强>
logging.basicConfig(=日志级别。信息,格式=& # 39;% (asctime) s - % (levelname)年代:% & # 39;(消息)) url=癶ttps://ihotel.meituan.com/hbsearch/HotelSearch" 头={ “User-Agent":“Mozilla/5.0 (Windows NT 10.0;WOW64) AppleWebKit/537.36 (KHTML,像壁虎)Chrome/80.0.3987.162 Safari 537.36“, “Referer":“https://hotel.meituan.com/chengdu" } 世行=openpyxl.Workbook () 表=wb.active sheet.append([& # 39;酒店名称& # 39;,& # 39;酒店地址& # 39;,& # 39;酒店类型& # 39;,& # 39;最低价& # 39;,& # 39;评价& # 39;,& # 39;评论数& # 39;,& # 39;经度& # 39;,& # 39;纬度& # 39;]) def hotel_data (x): data=https://www.yisu.com/zixun/{ “utm_medium”:“电脑”, “version_name”: 999.9, “cateId”: 20, “attr_28”: 129年, “uuid”:“5 d4e443ec83ddd49b73f317921eae16c7b492a634a67fa261773890f730a5932@1600263777783”, “cityId”: 59岁 “抵消”:x * 20, “限制”:20, “startDay”: 20200916, “endDay”: 20200916, 问:”,“排序”:“违约”, “X-FOR-WITH”:“47 zbbav + k1e7QrnKt4lEVXrmtOE9w2OpFfGsKf539CDdXIw4r2V/qICcWVeNACGHWNbD6iL4huPyRVdkNJJwR6dqcoQMyzjUE3cQGWr6YZOwANQOlCSrZ7m1 + aahwcnh/dTfaJLMZfxWaJQEISBuKbiMgDC8Vr4eaeWiYASkLl0ByB96MOUz7gfjUTbhlV0ZXvZ ucwNcK3zxTQjmoBINsAY4HwpKQLpOV2IqV1CtPg=', } res=请求。get (url,标题=头,params=数据) time . sleep(随机的。randint (1、3)) 结果=json.loads (res.text)(“数据”)(“searchresult”) 反对的结果: name=反对['名字']#酒店名称 addr=反对(“addr”) #酒店地址 明星=反对[' hotelStar '] #酒店类型 价格=反对[' lowestPrice '] #最低的价 scoreIntro=反对[' scoreIntro '] #评价 评论=反对[' commentsCountDesc '] #评论数 液化天然气,lat=反对“液化天然气”,反对(“纬度”)#经纬度 data=(名称、addr明星,价格,scoreIntro,评论,液化天然气,lat) sheet.append(数据) logging.info(数据)
程序运行成功,酒店信息保存到了Excel。
看完上述内容,你们对基于Python爬虫实现爬取美团酒店信息有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。