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

就是上面的商务出行 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. Swift UITextField各种属性的设置

    //MARK: 文本输入框 func _initTextField() { //如果需要在模拟器中调用电脑的键盘 快捷键:command + shift + k let textField = UIT ...

  2. python2 使用matplotlib

    背景 由於pyh在python3上沒法兒用,所以只能在python2上用pyh2 相應地也要在python2上使用matplotlib 下載 有兩種方法,pip & dnf pip爲: pip ...

  3. UNIX环境高级编程 标准IO库

    标准I/O库处理很多细节,使得便于用户使用. 流和 FILE 对象 对于标准I/O库,操作是围绕 流(stream)进行的.当用标准I/O打开或创建一个文件时,我们已使一个流与一个文件相关联. 对于A ...

  4. WIN7下配置和使用解压缩版MYSQL

    最近mysql出了新的GA版本——mysql5.6.11,此版本windows64位下只有解压缩版,于是在win7上进行了配置.期间碰到了一些问题,在此记录一下. 一.环境 操作系统:WIN764位 ...

  5. java project 项目在 linux 下面部署方法

    1.前提是安装好了响应的开发和部署环境,例如jdk. 2.在Linux下运行可执行Jar包,首先准备jar包,一般的编译工具Eclipse,jbuilder都提供export功能,可以生成jar包. ...

  6. PHP 数组转json_encode,单个数组下标为了0时不对??

    在 php 数组转json时,假如 有一个数组下标是顺序的,他json_encode后会直接变成一个简版二维json, $arr = ['1'=>1,'2'=>2]; echo (json ...

  7. PHP匹配Email、URL、IP

    /* * 正则表达式匹配 */ $email = '137813369@qq.com'; $regex = '/\w+([−+.]\w+)*@\w+([−.]\w+)*\.\w+([−.]\w+)*/ ...

  8. SQL的 like 中间字符通配 用法

    中间的字符也可以用通配符匹配如果业务需求是找出某表中某字段是“好*****上”的数据,SQL语句应该写成 select * from Table where UserName like '%好%上%' ...

  9. 简明 Python 教程--学习记录

    注意,我们在print语句的结尾使用了一个 逗号 来消除每个print语句自动打印的换行符.这样做有点难看,不过确实简单有效. print # prints a blank line 注意,没有返回值 ...

  10. 什么是YARN

    YARN的核心组件: 1)ResourceManager,扮演Master角色(和HDFS的nameNode很像)主要用于资源分配:RM有两个子组件,分别是Scheduler(Capacity Sch ...