# 旅游网站(携程网部分数据)大数据分析-hadoop课程设计
## 此处提供hadoop生态集群快速搭建项目地址和博客
地址:https://github.com/jarlor/hadoop_on_docker
博客:https://www.jarlor.site/2023/10/15/hadoop-on-docker/
# 最终数据可视化样式
![1666193180991](https://user-images.githubusercontent.com/53697817/196735860-d9d6fbe6-89f6-408c-b07b-bd741a8a392f.jpg)
# 绪论
## 研究背景
当今时代信息资源日益丰富大量,信息资源的利用对社会的发展起着主要作用,运用信息技术协助产业设计越来越成为行业发展的重要趋势。
旅游产业是典型的体验服务产业,在任何发展阶段,信息反馈的准确性与及时性都具有非凡的意义。大数据的3V特征,海量的数据规模(Volume)、快速的数据流转和动态的数据体系(Velocity)、多样的数据类型(Variety)都能够很好地满足旅游产业对信息的各方面需求。从现阶段发展来看,旅游大数据在系统了解旅游市场构成、细分市场特征、消费者需求和竞争者状况,保证品牌市场个性化方面以及在统计分析消费者行为、兴趣偏好和产品的市场口碑,有针对性地制订旅游产品和营销计划方面;在帮助企业管理者掌握旅游行业潜在的市场需求推进旅游行业收益管理等方面得到了有效应用,大数据分析技术在定制旅游上的应用更是逐渐发展成为一种全新的旅游生产方式。本文通过分析国内旅游市场现状、大数据的应用特点以及现有定制旅游网站产品服务的模式及特征,试图通过某种方式理解旅游用户的真正需求,从而帮助实现定制旅游网站的产品及服务设计最优。
## 研究现状
“定制旅游”是旅游市场发展的需要,同样是高度同质化的在线旅游市场发展的结果。它是以旅游者为主导进行旅游行动流程的设计,通常根据旅游者的消费能力,以满足其个性化的需求为原则,,设计出最大限度符合旅游者心理预期产品的一种旅游方式。定制旅游发展到现在不仅包括面向垂直细分人群的旅游产品设计更衍生出多种在线旅游产品平台模式。通过资料研究,现有基于大数据的定制旅游网站一般为两种模式。
其一,“反向定制”旅游网站模式。基于庞大的用户数据,进行旅游用户群行为的预测,从而根据旅游用户群体的喜好或消费倾向,制订相应主题的旅游产品。
其二,自主旅游定制模式。由旅游者提出具体求,旅游平台进行对接。“反向定制”模式创造性地结合了多样化与标准化,在满足客户个性化需求的同时,能够降低定制成本,加快定制速度。而自主旅游定制模式要求网站能够第一时间对用户需求做出反应,这里是指利用大数据和智能化技术,为用户一键生成出游路线计划。两种模式的定制旅游突破了传统旅游典型的标准化产品和服务,向人们展示了一种更便捷、更主动的旅行方式,在产品或服务的设计过程中,行程计划根据用户的需求定制,使旅行的灵活性极大增强,有效提升了旅游质量。自主定制旅游更突出科技的高效精准,大数据挖掘技术代替旅游用户本人做了行前大量的准备、调研工作,能够节省用户更多的时间成本。
然而,通过实例分析,现有定制旅游网站在概念层面以及满足用户个性化需求层面上存在不同程度的局限性。所谓“定制”是指个人属性强烈的产品,“反向定制”突出反映产品设计中人们普遍关注一个在线旅游用户群体,而较少从旅游用户个体的角度进行关联分析的现状;自主旅游模式更是从用户简单的几步倾向选择出发,进行用户求片面妄断。两种旅游定制模式严格意义上无法真正触及每个旅游个体用户的真正心理,无法实现真正的个性化定制。
## 开发环境
本文用到的开发环境如下:
1. IDEA 2018.3
2. Hadoop 2.7.2
3. Zookeeper 3.4.10
4. Hive 1.2.1
5. HBase 1.3.1
6. Echarts 5.1.1
# 数据抓取和清洗
## 相关技术
### Jsoup
Java中支持的爬虫框架有很多,比如WebMagic、Spider、Jsoup等。我们使用Jsoup来实现一个简单的爬虫程序。
Jsoup拥有十分方便的api来处理html文档,比如参考了DOM对象的文档遍历方法,参考了CSS选择器的用法等等,因此我们可以使用Jsoup快速地掌握爬取页面数据的技巧。
## 数据抓取
### 利用Jsoup抓取旅游网站数据
通过Jsoup对网页中有用的数据进行解析,之后我们将得到想要的数据。获取城市所有信息,首先需要获取到城市名称也就是获取所有\<dd\>\</dd\>标签中的所有a链接的文本。
## 数据清洗
数据清洗是指发现并纠正数据文件中可识别的错误的最后一道程序,包括检查数据一致性,处理无效值和缺失值等。与问卷审核不同,录入后的数据清理一般是由计算机而不是人工完成。
使用Jsoup获取到的是整个页面的资源,其中包含html的代码,也就会包含无意义的数据,需将它进行清洗。
1. 获取所有\<dd\>\</dd\>标签。
Elements all_dd = pinyin_filter.getElementsByTag("dd");
2. 获取\<dd\>\</dd\>标签下的所有a标签。
String cityID = StringUtil.getNumbers(element.attr("href"));
3. 获取所有a标签中的文本并添加到HotelCity类中,HotelCity实体类信息如表2-1所示:
表2-1 HotelCity实体类信息
| id | int |
| :-------- | ------- |
| name | varchar |
| price | double |
| lat | double |
| lon | double |
| url | varchar |
| img | varchar |
| score | double |
| dpsocre | int |
| star | varchar |
| stardesc | varchar |
| shortName | varchar |
核心代码如下:
```java
String headPinyin = dt_headPinyin.text();
hotelCity.setHeadPinyin(headPinyin);
```
### 清洗无意义数据
将获取到携程网的城市酒店的HTML数据(包含所有元素)进行清洗,得到我们需要的标签数据。为了更好的解析数据,我们要将一些无意义的数据进行清洗。Jsoup在这里提供了一个方便的清洗数据方法。然后就可以通过Jsoup进行数据的清洗。
## 获取所有酒店信息
通过分析酒店相关信息是ajax加载存放在json数据中,价格也在同一个json中但是放在另外的位置通过酒店id对应,并且请求方式是POST,请求的参数有很多,经检验可只传城市id获取,下面简单介绍通过网络请求将json数据拿到,最后将重要数据进行截取,返回一个清晰重要的json数据,再对json数据进行解析便可得到酒店相关信息。
# 数据存储
## 相关技术
### HBase
HBase是一个分布式的、面向列的开源数据库,该技术来源于Fay
Chang所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File
System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。
### 结构介绍
HBase——Hadoop
Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储,利用HBase技术可在廉价PC
Server上搭建起大规模结构化存储集群。
与FUJITSU Cliq等商用大数据产品不同,HBase是Google Bigtable的开源实现,类似Google
Bigtable利用GFS作为其文件存储系统,HBase利
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
旅游网站(携程网部分数据)大数据分析-hadoop课程设计(本科课设级别).zip (54个子文件)
content
pom.xml 7KB
src
test
java
demo11.java 363B
ScanTest.java 1KB
main
resources
you.ctrip.com.txt 244KB
hadoop.properties 153B
SourceImgs
whale_small.png 44KB
aomen.txt 55KB
wordcloud.txt 68KB
hotel.ctrip.com.txt 170KB
comment.txt 1.12MB
hotels.ctrip.com_citylist.txt 89KB
TargetImgs
wordcloud_comment.png 70KB
hotels.ctrip.com_domestic-city-hotel.txt 107KB
log4j.properties 342B
hongkong.txt 59KB
www.ctrip.com.txt 277KB
info.txt 210KB
static
hotel_echarts.html 5KB
hotelResult.txt 14KB
java
A_DataCapture
a_GetSourceData.java 398B
c_GetDataFromParseElement.java 2KB
d_GetAllCityName.java 3KB
b_ParseElement.java 1KB
B_DataClean
a_CleanDataForHotels.java 1KB
b_GetDataFromEveryHotel.java 2KB
E_DataVisualization
Run.java 328B
Build_WordCloud
CommentWordCloud.java 2KB
D_DataProcess
CountWordbyLocal
Run.java 990B
GetData
getData.java 1021B
WordParticiple
wordParticiple.java 2KB
AveragePrice
reducer
ApReducer.java 1020B
mapper
APMapper.java 1KB
Run.java 309B
tool
APTool.java 1KB
CountWord
reducer
CWReducer.java 1003B
mapper
CWMapper.java 1KB
Run.java 304B
tool
CWTool.java 1KB
Util
HBaseUtil.java 10KB
Connected.java 2KB
HttpUtil.java 5KB
HDFSUtil.java 5KB
GetDocument.java 314B
StringUtil.java 492B
F_ChartsData
chartsData.java 2KB
pojo
Hotel.java 3KB
HotelInfo.java 4KB
HotelCity.java 1KB
HotelComment.java 6KB
C_DataToHbase
InternalPojo
Hotel.java 4KB
HotelComment.java 6KB
SaveData.java 6KB
LICENSE 9KB
README.md 20KB
共 54 条
- 1
资源评论
生瓜蛋子
- 粉丝: 3918
- 资源: 7441
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- goth 包提供了一种简单、干净且惯用的方式来为 Go Web 应用程序编写身份验证包 .zip
- PHP 中 Cookie 和 Session 的使用简易教程(学习笔记)
- SoftEther VPN Client + VPN Gate Client 插件
- GoRequest-简化的HTTP客户端(受nodejs SuperAgent启发).zip
- 主要物体检测15-YOLO(v5至v9)、COCO、CreateML、Darknet、Paligemma、TFRecord、VOC数据集合集.rar
- Google Maps API Web 服务的 Python 客户端库.zip
- Google Authenticator 服务器端代码.zip
- logo标志检测26-YOLOv7、COCO、CreateML、Darknet、Paligemma、TFRecord、VOC数据集合集.rar
- golang 的算法和数据结构.zip
- Vue + SpringBoot前后端项目实例
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功