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

就是上面的商务出行 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爬取去哪儿网入住信息的更多相关文章
- 使用 Scrapy 爬取去哪儿网景区信息
Scrapy 是一个使用 Python 语言开发,为了爬取网站数据,提取结构性数据而编写的应用框架,它用途广泛,比如:数据挖掘.监测和自动化测试.安装使用终端命令 pip install Scrapy ...
- Python的scrapy之爬取链家网房价信息并保存到本地
因为有在北京租房的打算,于是上网浏览了一下链家网站的房价,想将他们爬取下来,并保存到本地. 先看链家网的源码..房价信息 都保存在 ul 下的li 里面 爬虫结构: 其中封装了一个数据库处理模 ...
- 32、出任爬虫公司CEO(爬取职友网招聘信息)
职友集,搜索到全国上百家招聘网站的最新职位. https://www.jobui.com/rank/company/ 打开网址后,你会发现:这是职友集网站的地区企业排行榜,里面含有 本 ...
- python - 爬虫入门练习 爬取链家网二手房信息
import requests from bs4 import BeautifulSoup import sqlite3 conn = sqlite3.connect("test.db&qu ...
- 网络爬虫之scrapy爬取某招聘网手机APP发布信息
1 引言 过段时间要开始找新工作了,爬取一些岗位信息来分析一下吧.目前主流的招聘网站包括前程无忧.智联.BOSS直聘.拉勾等等.有段时间时间没爬取手机APP了,这次写一个爬虫爬取前程无忧手机APP岗位 ...
- 爬取西刺网的免费IP
在写爬虫时,经常需要切换IP,所以很有必要自已在数据维护库中维护一个IP池,这样,就可以在需用的时候随机切换IP,我的方法是爬取西刺网的免费IP,存入数据库中,然后在scrapy 工程中加入tools ...
- Java爬取校内论坛新帖
Java爬取校内论坛新帖 为了保持消息灵通,博主没事会上上校内论坛看看新帖,作为爬虫爱好者,博主萌生了写个爬虫自动下载的想法. 嗯,这次就选Java. 第三方库准备 Jsoup Jsoup是一款比较好 ...
- java爬取网页内容 简单例子(2)——附jsoup的select用法详解
[背景] 在上一篇博文java爬取网页内容 简单例子(1)——使用正则表达式 里面,介绍了如何使用正则表达式去解析网页的内容,虽然该正则表达式比较通用,但繁琐,代码量多,现实中想要想出一条简单的正则表 ...
- Python的scrapy之爬取顶点小说网的所有小说
闲来无事用Python的scrapy框架练练手,爬取顶点小说网的所有小说的详细信息. 看一下网页的构造: tr标签里面的 td 使我们所要爬取的信息 下面是我们要爬取的二级页面 小说的简介信息: 下面 ...
随机推荐
- 为Linux服务器的SSH登录启用Google两步验证
对于Linux服务器而言使用密钥登录要比使用密码登录安全的多,毕竟当前网上存在多个脚本到处进行爆破. 这类脚本都是通过扫描IP端的开放端口并使用常见的密码进行登录尝试,因此修改端口号也是非常有必要的. ...
- 【javascript】jquery杂记
checkbox $("#checkfirst").prop("checked") $('#chk-select-silent').is(':checked') ...
- php开发中一些前端知识杂总
推荐几个jqyuey插件的好地方 http://jqueryui.com/ http://www.jq22.com/ 背景: 服务端采用ci3.0框架,twig作为模板嵌套. twig模板手册: ht ...
- Floyd's Cycle Detection Algorithm
Floyd's Cycle Detection Algorithm http://www.siafoo.net/algorithm/10 改进版: http://www.siafoo.net/algo ...
- erl_0017 《硝烟中的erlang》 读书笔记004 “锁和阻塞”
如果某个进程需要持续地接收新任务,那么其在执行耗时过长的锁或者阻塞操作时,就会出现问题. 最为常见的例子之一就是:某个进程使用了TCP socket,阻塞在了接收新的连接或者等待消息上面.在执行此类阻 ...
- 每天一个linux命令(文件操作):【转载】find 命令的参数详解
find一些常用参数的一些常用实例和一些具体用法及注意事项. 1.使用name选项: 文件名选项是find命令最常用的选项,要么单独使用该选项,要么和其他选项一起使用.可以使用某种文件名模式来匹配文件 ...
- JSP学习(一)JSP基础语法
JSP基础语法 1.JSP模版元素 JSP页面中的HTML内容称之为JSP模版元素. JSP模版元素定义了网页的基本骨架,即定义了页面的结构和外观. <%@ page language=&quo ...
- 当我们使用 MVVM 模式时,我们究竟在每一层里做些什么?
这篇文章不会说 MVVM 是什么,因为讲这个的文章太多了:也不会说 MVVM 的好处,因为这样的文章也是一搜一大把.我只是想说说我们究竟应该如何理解 M-V-VM,当我们真正开始写代码时,应该在里面的 ...
- elixir grpc 试用
备注: elixir grpc 封装测试 1. 安装 a. 安装 protoc 参考相关文档,比较简单 b. 安装elixir grpc 插件 protoc-gen-elixir 同时配置环 ...
- sentry docker-compsoe 安装以及简单使用
1. 准备环境 docker docker-compose 2. 安装 a. docker-compose git clone git clone https://github.com/get ...