16

手把手用 Python 网络爬虫带你爬取全国著名高校附近酒店评论

 4 years ago
source link: https://mp.weixin.qq.com/s/wYb_Gck2DrlA2ocaF3i_fQ
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

点击上方“ Python爬虫与数据挖掘 ”,进行关注

回复“ 书籍 ”即可获赠Python从入门到进阶共10本电子书

我站在鼓楼下边,一切繁华与我无关。

/1 前言/

简介: 本文介绍如何用python爬取全国著名高校附近的酒店点评,并进行分析,带大家看看著名高校附近的酒店怎么样。

/2 具体实现/

具体的实现主要是分为三步,具体的操作过程如下。

一、抓取高校附近的酒店信息

由于电脑客户端的美团酒店没有评论信息,于是我从手机端的网页入手,网页地址为: https://i.meituan.com/awp/h5/hotel/search/search.html

通过搜索北京大学附近的酒店,抓包找到了返回酒店json信息的url。

其中,limit代表返回酒店的最大数量(经测试,limit最大为50),offset为每次返回酒店数量的起点,cityId为城市的标志,在网页信息中可以找到,时间参数可以修改,sort为返回酒店信息的排序,sort=distance代表按距离搜索,q和keyword都是大学名称。

返回的数据如下图所示:

yqUfUrY.png!web

包含酒店的名字、地理位置、评分、realPoiId(相当于酒店的身份证号,后面爬评论用的到)、酒店和大学的距离等信息。

下面我们开始爬排名前10高校附近的酒店信息(不要在乎大学排名,我乱找的,以学习为主):

77VfUrz.jpg!web

(图片来源于网络)

部分代码如下图所示:

rUfEn2Z.png!web

其中cityId和大学名字为控制变量,通过返回的距离信息将酒店位置控制在2000米以内,输出结果为:

uIJJnai.jpg!web

看看这10所大学2000米附近附近有多少家酒店:

mu6FbyR.png!web

我们可以发现,南京大学附近酒店最多,有453家; 上海交通大学闵行校区附近酒店最少,有75家。

二、抓取每家酒店的点评信息

这个从这个url可以返回每家酒店的评论数量,poiId是酒店的“身份证号”。

eIRNfuE.png!web

这个url可以返回酒店的所有评论信息,其中limit为返回的评论数量,可以直接用上个url返回的评论数量,一次全部以json格式返回,非常方便,返回结果如下:

qaQvAjE.jpg!web

三、遇到的坑

1.刚开始爬评论是1次返回15个,后来发现可以Limit可以为评论的最大值,但是第一步返回的酒店信息中包含酒店评论数量是不准确的,要用第二步的方法;

2.评论中乱七八糟的表情、符号也是大坑,去了好久也去不干净;

3.最好用代理IP地址爬,否则评论太多,会被封。

/3 结语/

本文基于Python网络爬虫,抓取了高校旁边的酒店数量及其评论数量,如果你想抓取其他地方的其他信息,也是可行的,可以纵向拓展。

欢迎 大家 尝试, 消耗 在家的无聊时间 本文涉及的 代码都上传到了github地址上,后台回复“ 高校酒店 ”四个字即可获取代码

--- -- --- --- --- -- --- End  --- -- --- -- --- --- -- -

往期精彩文章推荐:

jaYBba3.png!web

欢迎大家 点赞, 留言, 转发, 转载, 感谢大家的相伴与支持

想加入Python学习群请在后台回复【 入群

万水千山总是情,点个【 在看 】行不行

/今日留言主题/

说一两个你曾经去旅游过的城市?


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK