“
外出旅游,酒店一定会占据一大部分开销。哪些酒店的价格是合理的?这个价格配得上它的地理位置么?这个价格和它对应的服务匹配么?数据侠 Johnnie 以纽约的酒店为例,尝试用数据一窥决定酒店价格的因素,做出一份出行居住指南。
Tripadvisor 是美国最大的旅游网站之一,你可以轻松查到纽约所有酒店的信息,包括:酒店星级,价格,位置,用户评论。
我使用了爬虫工具 Selenium 来爬取这个网站的数据。过程如下:首先打开主页;然后找到每一页的 url;点击每个url 进入对应页面,点击进入每个酒店的主页;最后,爬取细节信息(价格,星级,评分,地理位置,评论中最常用的词语)。
对我来说,挑战在于找到对应每个希望爬取的内容的XML路径语言。有时候是因为我检查网页时,没有找到单一的XML路径语言。有时候是因为信息是用 AJAX 写的,Selenium无法爬取。其中,我把每页的url 都列出来是因为在这个网站中,“下一页”按钮没有自己的XML路径语言。
而且,当我第一次爬取酒店价格数据时,有许多酒店的数据是空的。当我回去查看一遍的时候,我发现他们的XML路径语言与其他酒店不同,所以我增加了更多XML路径语言,直到完成所有爬取。
在做爬虫的过程中,我还是遇到了一些数据缺失。纽约酒店一共有四百多家,但我每次只能爬取100家。于是我爬取了三次,然后结合这些结果得到一共252家酒店的数据。
这说明,即使你对爬虫掌握的比较熟练,但是在实际爬取的过程中,由于不同网站的设计不同,你总会遇到很多意外的情况,有时候不能收集到完美的数据集。这是导致了第三方爬取数据产生误差的主要原因。
完成了数据爬取工作后,我对其进行了一些简要处理,然后就可以分析了。
首先我们来看看价格。曼哈顿酒店的平均价位是一晚上123美元。而且,281美元以下的占了75%。说明最常见的价格是在123到281美元之间。
接下来,我们来看一看价格与不同因子之间的关系。首先是价格和酒店星级。
通常,酒店星级越高,价格越贵。然而,从下图看出,即便五星酒店也有一些房间价格和低于五星酒店一样。所以这两个变量间没有很强的关联。可能是酒店在淡季打折造成的,至于旅客,价格一样当然选星级高的了。
其次是价格与排名。根据下图,其中的点在排名第一和排名251之间呈现均匀分布。说明价格和排名没有什么直接关系。
接着,我们来看看价格与位置。
我用邮编来代替具体地理位置。如下图,有些区域有最贵的均价,包括10010,10021,10023.(大概对应的是华盛顿广场公园,上东区,林肯中心)。然而,其他的所有区域价格就都比较相似了。所以,只有选择上述三个区域,才会支付比较贵的价格,可能高于400美元,否则他们基本不会花费超过300美元。
(图片说明:横坐标为邮编,代表地理位置,注意10010华盛顿广场公园)
(图片说明:横坐标为邮编,代表地理位置,注意10021上东区、10023林肯中心)
然后是酒店评价。酒店评价中包含了更多的信息。我为不同星级的酒店制作了4组词云图。
一方面,所有酒店都有“房间太小”这么个负面评价。这意味着,如果你住在纽约,房子就永远都会是很小。
另一方面,随着星级上升,人们开始更关心附加价值。比如,对于2星的酒店,我们可以看到“早餐”成为常出现的词语。三星是“免费早餐”,四星是“免费早餐”和“电影”以及“城市景色”。对于五星酒店,我们可以看到“屋顶酒吧”,“饭店”和“娱乐室”等。
(图片说明:左边是二星级酒店词云,右边是三星级酒店词云)
(图片说明:左边是四星级酒店词云,右边是五星级酒店词云)
所以,我们分析了这么多,到底什么价格是合理的呢?答案其实并不唯一。但是我们找到了几个有用的点,可以为你提供一些参考。
所以,下次来纽约的时候,希望你能选到自己最钟意的酒店咯。
注:本文编译自技术博客 Scriping Tripadvisor: A Guide for New York City Travelers on Choosing A Hotel。点击“阅读原文”查看。内容仅为作者观点,不代表DT数据侠立场。文中图片部分来自作者。
作者 | Johnnie
题图 | 站酷海洛