昨天帮一个商科同学爬取去哪儿网站的所有广州如家快捷酒店的所有入住信息。

就是上面的商务出行 xxx年入住这些东西

然而去哪儿的前端很强,在获取所有如家快捷酒店的时候就遇到了问题。

他显示的酒店列表是js动态加载的,按了下一页之后,网站本来的url不变的。所以更新了的那部分内容获取不到。

抓包看了一下,返回的酒店信息竟然都是加密的。

Selenium试了也不行。

所以通过爬取获取所有酒店网页的url是不行咯。

只能通过手动打开酒店的url ,在获取下面的评论信息。第一页的酒店URL可以直接获得的,大概30条,然而总共才40多个酒店而已,不算麻烦。

仔细观察发现

<li><a href="http://hotel.qunar.com/city/guangzhou/dt-15216/">如家快捷广州琶洲会展中心店[</a><a href="http://review.qunar.com/hotel_guangzhou_15216.html">如家快捷广州琶洲会展中心店 点评</a>]位于广州市海珠区新港东路路1066号。<a href="http://homeinns.hotel.qunar.com/">[如家快捷酒店]</a></li>
<li><a href="http://hotel.qunar.com/city/guangzhou/dt-15195/">如家快捷广州番禺厦滘地铁站沙溪国际酒店用品城店[</a><a href="http://review.qunar.com/hotel_guangzhou_15195.html">如家快捷广州番禺厦滘地铁站沙溪国际酒店用品城店 点评</a>]<a href="http://homeinns.hotel.qunar.com/">[如家快捷酒店]</a></li>
<li><a href="http://hotel.qunar.com/city/guangzhou/dt-9289/">如家快捷广州滨江西路人民桥文化公园地铁站店[</a><a href="http://review.qunar.com/hotel_guangzhou_9289.html">如家快捷广州滨江西路人民桥文化公园地铁站店 点评</a>]座落珠江河畔,步行10分钟达上下九步行街,乘地铁15分钟可达琶洲会展中心,火车站20分钟车程即可到达。<a href="http://homeinns.hotel.qunar.com/">[如家快捷酒店]</a></li>
<li><a href="http://hotel.qunar.com/city/guangzhou/dt-2064/">如家快捷广州白云路团一大广场地铁站店(原广州白云路店)

这些酒店URL只是后缀的数字不同而已,这个发现后面很有用哦。

然后看评论信息

评论的部分也是js动态加载的,不过幸好这部分没有加密!!!!!

而且发现了评论部分返回JSON信息

某酒店第一页评论是这样的:

http://review.qunar.com/api/h/guangzhou_2372/detail/rank/v1/page/1?__jscallback=jQuery183025870453706011176_1448419850826&rate=all&onlyGuru=false&_=1448419874133

然后发现,第二页是这样的:

http://review.qunar.com/api/h/guangzhou_2372/detail/rank/v1/page/2?__jscallback=jQuery183025870453706011176_1448419850826&rate=all&onlyGuru=false&_=1448419874133

所以通过循环,从1到最后一页评论,就能得到所有的评论数据了

其实不用解析JSON那么麻烦

用正则表达式 Pattern pattern = Pattern.compile("[0-9]+年[0-9]+月"); 就能把里面的入住信息提取出来了

至于后来的统计每年多少人入住之类的,就很简单了。

对于其他酒店

http://review.qunar.com/api/h/guangzhou_"酒店的编号"/detail/rank/v1/page/"页码"?__jscallback=jQuery183025870453706011176_1448419850826&rate=all&onlyGuru=false&_=1448419874133

所以,我们只需知道酒店编号和评论的页数,就能获取所有的评论数据了。

我把关于一个酒店评论里面所有入住日期的信息下载到一个文件里面封装成了这个函数:

//第一页评论 第n页评论 酒店编号 文件名

rujia.getData(1,41,11880,"如家快捷广州天河客运站店.txt");

txt文件内容如下:

2014年03月
2014年09月
2015年06月
2015年05月
2014年09月
2012年10月
2014年09月
2015年06月
2015年06月
2014年11月
2014年02月
2014年07月
2015年11月
2015年11月
2015年10月
2015年10月
2015年10月
2015年10月
2015年10月
...
2014年05月
2014年05月
2014年05月
2014年04月
2014年03月
2014年02月
2013年12月
商务
商务
独自
...
商务
商务
夫妻
夫妻
夫妻
2015: 132
2014: 264
2013: 5
2012: 1
2011: 0
2010: 0
独自旅行: 4
朋友结伴: 5
夫妻/情侣: 9
商务出行: 9

使用JAVA爬取去哪儿网入住信息的更多相关文章

  1. 使用 Scrapy 爬取去哪儿网景区信息

    Scrapy 是一个使用 Python 语言开发,为了爬取网站数据,提取结构性数据而编写的应用框架,它用途广泛,比如:数据挖掘.监测和自动化测试.安装使用终端命令 pip install Scrapy ...

  2. Python的scrapy之爬取链家网房价信息并保存到本地

    因为有在北京租房的打算,于是上网浏览了一下链家网站的房价,想将他们爬取下来,并保存到本地. 先看链家网的源码..房价信息 都保存在 ul 下的li 里面 ​ 爬虫结构: ​ 其中封装了一个数据库处理模 ...

  3. 32、出任爬虫公司CEO(爬取职友网招聘信息)

    职友集,搜索到全国上百家招聘网站的最新职位.   https://www.jobui.com/rank/company/   打开网址后,你会发现:这是职友集网站的地区企业排行榜,里面含有     本 ...

  4. python - 爬虫入门练习 爬取链家网二手房信息

    import requests from bs4 import BeautifulSoup import sqlite3 conn = sqlite3.connect("test.db&qu ...

  5. 网络爬虫之scrapy爬取某招聘网手机APP发布信息

    1 引言 过段时间要开始找新工作了,爬取一些岗位信息来分析一下吧.目前主流的招聘网站包括前程无忧.智联.BOSS直聘.拉勾等等.有段时间时间没爬取手机APP了,这次写一个爬虫爬取前程无忧手机APP岗位 ...

  6. 爬取西刺网的免费IP

    在写爬虫时,经常需要切换IP,所以很有必要自已在数据维护库中维护一个IP池,这样,就可以在需用的时候随机切换IP,我的方法是爬取西刺网的免费IP,存入数据库中,然后在scrapy 工程中加入tools ...

  7. Java爬取校内论坛新帖

    Java爬取校内论坛新帖 为了保持消息灵通,博主没事会上上校内论坛看看新帖,作为爬虫爱好者,博主萌生了写个爬虫自动下载的想法. 嗯,这次就选Java. 第三方库准备 Jsoup Jsoup是一款比较好 ...

  8. java爬取网页内容 简单例子(2)——附jsoup的select用法详解

    [背景] 在上一篇博文java爬取网页内容 简单例子(1)——使用正则表达式 里面,介绍了如何使用正则表达式去解析网页的内容,虽然该正则表达式比较通用,但繁琐,代码量多,现实中想要想出一条简单的正则表 ...

  9. Python的scrapy之爬取顶点小说网的所有小说

    闲来无事用Python的scrapy框架练练手,爬取顶点小说网的所有小说的详细信息. 看一下网页的构造: tr标签里面的 td 使我们所要爬取的信息 下面是我们要爬取的二级页面 小说的简介信息: 下面 ...

随机推荐

  1. [javascript][转载]jQuery获取Select选择的Text和 Value

    原文地址: http://www.cnblogs.com/yaoshiyou/archive/2010/08/24/1806939.html http://www.cnblogs.com/SAL292 ...

  2. Hive中日期处理

    1.日期函数UNIX时间戳转日期函数:from_unixtime() 函数 格式 返回值 说明 from_unixtime from_unixtime(bigint unixtime[, string ...

  3. SQL夯实基础(九)MySQL联接查询算法

    书接上文<SQL夯实基础(八):联接运算符算法归类>. 这里先解释下EXPLAIN 结果中,第一行出现的表就是驱动表(Important!). 对驱动表可以直接排序,对非驱动表(的字段排序 ...

  4. imsl库的使用过程中遇到的问题

    1,首先是安装,用的imsl7.0的库,网址:http://www.pipipan.com/file/87076708,里边有破解,但是这个安装文件只能装32位的,装不了64位的. 2,安装后找到lm ...

  5. 关于在2.7中出现 "UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal"

    在中文字符串前面加u. Make sure your code is in UTF-8 (NOT Latin-1) and/or use a coding line as so: #! /usr/bi ...

  6. Clair:CoreOS发布的开源容器漏洞分析工具

    Clair为何而生:提升安全 软件世界里,安全漏洞会一直存在.好的安全实践意味着要对可能出现的事故未雨绸缪 - 即尽早发现不安全的软件包,并准备好快速进行升级.而Clair就是设计来帮助你找出容器中可 ...

  7. Docker生态概览

    百花齐放的容器技术 虽然 docker 把容器技术推向了巅峰,但容器技术却不是从 docker 诞生的.实际上,容器技术连新技术都算不上,因为它的诞生和使用确实有些年头了.下面的一串名称肯能有的你都没 ...

  8. ABP学习之路

    ABP文档介绍 http://www.cnblogs.com/kid1412/p/AbpDocumentContent.html [ABP开源项目]--vue+vuex+vue-router+EF的权 ...

  9. RK3288 添加USB转虚拟串口设备

    在系统开启并有日志打印的前提下,插入USB设备,就会打印USB设备和虚拟串口信息. 打印信息如下: 供应商ID(VID):idVendor=1234,产品ID(PID): idProduct=5678 ...

  10. 【转载】chrome控制台中看见的cookie属性详解

    在chrome控制台中的resources选项卡中可以看到cookie的信息. 一个域名下面可能存在着很多个cookie对象. name字段为一个cookie的名称. value字段为一个cookie ...