十一假期旅游如何规划路线,让python带你玩转各景点

livandata

数据EDTA创始人,没有之一

现担任数据EDTA个人公众号董事长兼CEO兼财务兼创作人

口号:让大数据赋能每一个人

前言

数据EDTA的读者们,大家好~

国庆将至大家有没有安排出行呢?

有没有翻遍了网站,为出行计划焦头烂额呢?

哈哈

不要着急~

今天,笔者与大家分享,身为一个python技术员是一件多么幸福的事情,因为:假期苦短,要用python~

笔者也是一个经常会为各种规划焦头烂额的人,出行一个礼拜,地点各不相同,一不小心就会多走几公里路,多花几个小时时间,那么,如何才能找到旅游地点之间的最短距离呢?

为了解决出行问题,笔者爬取了携程的热门酒店名称,然后调用高德地图的api,循环遍历找到了各个酒店的经纬度,而后根据酒店位置聚类定位景区的位置,再通过路径优化找到最便捷的出行顺序,如此,旅游可期了~

在这里笔者介绍一下为什么爬取热门酒店的位置?

如果要分析一个景区的热门程度,最好的方法是获取这个地方的人流量,即每个人的坐标以及活动轨迹,但是在平时的操作中,由于人是不停移动的,不仅很难获取对应的位置信息,而且涉及到个人隐私问题,我们无法进行单个人群的路径分析,退而求其次,我们选择分析热门的酒店情况,热门的景区周围总是伴随着大批酒店的,那么,我们可以根据酒店的数量间接的获取热门景区的位置,进而进行景区位置定位。

那么,我们的问题来了:

如何获取携程的酒店信息

笔者仔细分析了携程的网站信息,感谢携程对数据的宽容,携程的反爬手段并没有太严苛:

或许是我们获取数据太少的原因,我们只需要获取到携程某个地区的酒店名称即可,数据量不大,再加上所需字段较少,我们也就轻松的获取到了携程酒店名称。

 
def post_json_data(url, formdata):time.sleep(1)headers = {'accept': '*/*','accept-encoding': 'gzip, deflate, br','Content-Type': 'application/x-www-form-urlencoded','Cookie': cookie,'User-Agent': ua.get_useragent()}# , proxies = proxydata = requests.post(url, proxies = proxy, data=formdata, headers=headers)# print(data)return data.json()
Python学习qq群:10667510,送全套爬虫学习资料与教程~

(国庆给大家一个轻松的阅读,为保证阅读流畅性,尽量减少了代码的数量,如有需要,请关注公众号并回复“国庆节快乐”,完整代码就会出来了~)

酒店名称获取到之后,我们就可以打开高德地图的免费api,循环遍历出每个酒店的经纬度了。

如何获取各个酒店的经纬度

获取各个酒店的经纬度是需要调用高德地图的api接口的,这一过程看似高大上,但是实际操作起来却是异常的简单,此处应该给出一些掌声的,不是给我,而是给马云,开源的数据和工具挽救了多少程序员的头发,真心太感谢了~

使用高德主要有两个步骤:

1)注册高德开发平台,获取到代码需要的key值:

至于如何注册,麻烦各位看官百度一下,此处也算是提供了一个和百度建立战略合作关系的机会:有事不会用百度,有问必答~

笔者对于上图的高端黑没有免疫力,让我先沉醉一会~

…………此处省略5万字赞美…………

注册成功后,我们需要在平台上构建一个应用:

应用构建完成了,对应的key值就产生了~

是不是很简单?

得到key值后,我们就开始获取对应的经纬度了。

2)经纬度的获取:

我们将上文中的酒店名称提取出来,用python逐个遍历,就能得到对应的酒店经纬度:

 

#!/usr/bin/env python

# _*_ UTF-8 _*_

# author:livan

import requests

import json

def coords(city):

# 输入API问号前固定不变的部分

url = 'https://restapi.amap.com/v3/geocode/geo'

# 将两个参数放入字典

params = {'key': 你的key值,

'address': city}

res = requests.get(url, params)

jd = json.loads(res.text)

return jd['geocodes'][0]['location']

city = '*华'

attr = coords(city)

print(attr)

确定景点位置

上文我们也提到过,景点的位置是通过酒店位置来确定的,细想这一思路有其可取之处:

1)各个景区非常庞大,如果我们按照景区的固有位置推荐,得到的未必便捷,如果我们定位到大山深处,各位游客恐怕要寄刀片了~

2)大家旅游首先会选择落脚的地方,于是笔者推荐距离各个酒店较近的地方,方便游客落脚休息。

那么聚类的代码是什么样子呢:

 

# k均值聚类

def KMeans(dataSet, k):

m = np.shape(dataSet)[0] # 行的数目

# 第一列存样本属于哪一簇

# 第二列存样本的到簇的中心点的误差.

# np.mat()行列转换。

clusterAssment = np.mat(np.zeros((m, 2)))

clusterChange = True

 

# 第1步 初始化centroids

centroids = randCent(dataSet, k)

while clusterChange:

clusterChange = False

 

# 遍历所有的样本(行数)

for i in range(m):

minDist = 100000.0

minIndex = -1

 

# 遍历所有的质心

# 第2步 找出最近的质心

for j in range(k):

# 计算该样本到质心的欧式距离

print('--------------------------------------')

print(centroids[j, :])

print(dataSet[i, :])

distance = distEclud(centroids[j, :], dataSet[i, :])

if distance < minDist:

minDist = distance

minIndex = j

# 第 3 步:更新每一行样本所属的簇

if clusterAssment[i, 0] != minIndex:

clusterChange = True

clusterAssment[i, :] = minIndex, minDist ** 2

# 第 4 步:更新质心

for j in range(k):

pointsInCluster = dataSet[np.nonzero(clusterAssment[:, 0].A == j)[0]] # 获取簇类所有的点

centroids[j, :] = np.mean(pointsInCluster, axis=0) # 对矩阵的行求均值

 

print("Congratulations,cluster complete!")

return centroids, clusterAssment

是不是很贴心~

基于上面的思考,我们得到了各个酒店的景区位置图:

哇~

有没有感觉好多色彩~

傻了吧?

都不知道在哪里落脚了~

作为一个资深的数据分析师,笔者自然不能交这样的作业,于是,笔者给出了各个景区的质心点,就是距离各个类别酒店最近的位置:

是不是瞬间清凉了很多,旅游的兴趣瞬间又被拉了回来~

但是,就算是这样的图形,该怎么旅行呢?

依然是没有思路的~

不要着急~且往下看~

确定最短路径

见到了上面的景区位置,那么,如何确定哪条路线是最短路线呢?

笔者的思路是这样的:

1)先确定起始点,并计算起始点距离其他各个点的距离;

2)找到距离起始点最近的点,连接两个点,并将最近的点作为新的起始点;

3)过滤掉旧的起始点,然后用新的起始点在重新计算各个点之间的距离,并连接距离最近的两个点;

4)循环计算,直到所有点都连在了一起;

经过上面的运算,是不是对于出行计划有感觉了呢?

我们看一下图形:

天啊~

这不是北斗七星吗?

错~

这是出行路线~

图形虽简洁,但是基本的出行计划已经勾勒出来了,是不是很简单呢?

后续

如果你认为这是路程规划的全部,那遗憾的告诉你,你把问题想简单了,本文选择的算法是常用的:k-meaning聚类和欧氏距离路径优化,这两个算法在思路讲解方面有其独到之处,但是在实践中却是需要更多的条件。

各个领域路径优化的案例算法也非常成熟,比如:邮局选择、物流最优路径等,如果大家有兴趣,欢迎大家关注沟通~

实例分享

技术是需要沟通的,笔者也是一个喜欢交朋友的程序猿,欢迎大家 关注 公众号: livandata,沟通路径优化的常用算法。

如果大家需要上面案例的源码,请关注公众号,回复“国庆节快乐”即可。

代码为原创,仅供学习交流,请勿用于商业应用,谢谢大家~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/41624.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2021地理设计组一等奖:面向游客的旅游路线优化设计——以丹霞山景区为例

作品简介 一、背景与意义 随着旅游业的快速发展与人们对旅行质量要求的提升&#xff0c;旅游者对旅游服务的内容要求也越来越高&#xff0c;其中的旅游导航便是一项需求率极高的服务。然而传统的导航服务多是基于时间或距离成本进行网络分析而提供的路径设计&#xff0c;极少考…

python去哪儿网的旅游景点信息

爬取过程分析&#xff1a; 1、网站url&#xff1a;‘https://piao.qunar.com/ticket/list.htm?keyword北京&page1’ 2、http请求方法为get方法 3、用beautifulsoup提取所需要的信息 4、将爬取的信息存至本地 具体代码如下&#xff1a; import requests from bs4 import B…

基于python+django框架+Mysql数据库的旅游景区景点售票系统设计与实现

项目背景和意义 目的&#xff1a;本课题主要目标是设计并能够实现一个基于web网页的景区景点购票系统&#xff0c;整个网站项目使用了B/S架构&#xff0c;基于python的Django框架下开发&#xff1b;管理员通过后台录入信息、管理信息&#xff0c;设置网站信息&#xff0c;管理会…

基于微信小程序的旅游社微信小程序

文末联系获取源码 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7/8.0 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.3.…

基于大数据分析的旅游平台的设计与实现

摘 要 随着旅游业的发展&#xff0c;旅游平台作为旅游行业的重要组成部分已经逐渐受到了越来越多的关注。在这样的背景下&#xff0c;基于大数据分析的旅游平台应运而生。本文旨在研究基于大数据分析的旅游平台。 本文根据旅游行业目前的发展趋势&#xff0c;提出了一种可…

用Python爬取了全国近5000家旅游景点,分析国庆去哪玩

双节同庆&#xff0c;小长假如约而至 我想今年大家在家都憋坏了 这么长的假期&#xff0c;当然是出去 玩玩玩&#xff01; 每当长假的时候&#xff0c;有没有想起被人山人海支配的恐惧&#xff01; 该去哪些地方呢&#xff1f; 我用 Python 爬取了全国近 5000 个旅游景点&#…

景区旅游管理系统

1、项目介绍 基于SSH的景区旅游管理系统6拥有两种角色&#xff1a;管理员和用户 管理员&#xff1a;景点管理、酒店管理、客房管理、用户管理等 用户&#xff1a;查看搜索景点、酒店景点预定、订单查看、评论打分等 2、项目技术 后端框架&#xff1a;SSH&#xff08;Strut…

基于大数据架构实现景点游客数据分析平台,全国景点游客数据管理系统

随着最近几年旅游行业的兴起&#xff0c;越来越多的景区景点将传统模式的线下统计模式变更成为了线上分析统计模式&#xff0c;线上对景区游客数据的管理与监督的新型模式。很多的景点采用游客数据分析平台系统&#xff0c;在线上对不同景点内部的游客数据进行管理&#xff0c;…

基于python下django框架 实现旅游景区景点售票系统详细设计

前言介绍&#xff08;开发目的和意义&#xff09; 本课题主要目标是设计并能够实现一个基于web网页的景区景点购票系统&#xff0c;整个网站项目使用了B/S架构&#xff0c;基于python的Django框架下开发&#xff1b;管理员通过后台录入信息、管理信息&#xff0c;设置网站信息…

旅游景点咨询系统的设计与实现

【实验目的】 熟悉图数据结构的基本特征、构造方法理解迪杰斯特拉算法、弗洛伊德算法寻找最小路径的原理练习上述数据结构与算法的实现。 【实验原理】 图的创建与遍历算法迪杰斯特拉算法从给定的一点出发&#xff0c;求该点到所有其他顶点的最短路径&#xff0c;我们将顶点…

旅游景区景点订票售票系统设计与实现

项目背景和意义 目的&#xff1a;本课题主要目标是设计并能够实现一个基于java的景区景点预约购票系统&#xff0c;整体使用javaMySql的B/S架构&#xff0c;技术上采用了springboot框架&#xff1b;通过后台添加景区资讯、景点介绍&#xff0c;管理用户订单&#xff1b;用户通过…

【WordNet】词典——omw-1.4下载

from nltk.corpus import wordnet syns wordnet.synsets("bank") print(syns[0].name())运行这段代码时&#xff0c;编译器会提示找不到【omw-1.4】这个东西 官方地址 官方NLTK网址 但是要科学上网… 分享一个已经下载好的 链接&#xff1a;https://pan.baidu.c…

【翻译】【词典】【词库】(PC版)离线词典GoldenDict+离线词库--地表最强 (by shany shang)

&#xff08;PC版&#xff09;离线词典–地表最强 一、下载 GoldenDict 客户端 &#xff08;windows&#xff09; &#xff08;1&#xff09;下载网址&#xff1a;&#xff08;点不开 &#xff0c;记得用谷歌哟&#xff09; https://sourceforge.net/projects/goldendict/fi…

quicker + Golden Dict 实现比欧陆词典更好用的免费查词翻译神器

免费、纯净无广告、界面简洁&#xff0c;Golden Dict 搭配词库文件&#xff0c;就成为桌面端的查词翻译神器。 然而有时候遇到阅读外文文档、源码注释时&#xff0c;Golden Dict 不支持整句翻译&#xff0c;不支持OCR 文字识别&#xff0c;体现了它的短板。 于是&#xff0c;…

GoldenDict 上的那些精美版权词典(附下载地址)(英语、俄语、梵语、印地语)

转载▼ 标签&#xff1a; 杂谈 国内的有道词典和金山词典由于使用方便、宣传到位得到了许多同学的喜爱。在开源软件的领域&#xff0c;也有一款非常好用的词典GoldenDict&#xff0c;它的强项在于可以直接使用众多词典厂商的词库。那些正规的词典厂商通常购买了词典的版权…

Qy词典-免费离线的中英词典

离线可用词量丰富快速精准免费开源-安全可靠界面清爽中英互译最重要的就是词库是离线文件&#xff0c;不依赖任何&#xff0c;所以可用性很高 1C币-CSDN下载链接 在我自己搭建的nginx静态文件服务器上的下载地址

欧路词典如何导入html,欧路词典怎么添加词库 管理词库的方法介绍

欧路词典电脑版的翻译功能深得广大英语学习用户的喜爱&#xff0c;很多用户在使用过程中不知道怎么添加词库&#xff0c;那么小编我今天就来为大家讲讲&#xff0c;赶快来看看下面的文章吧&#xff01; 操作步骤如下&#xff1a; 1、首先需要进入欧路词典并进行登录&#xff0c…

iPad 使用技巧:欧路词典

通常&#xff0c;欧路词典的免费版本就够用了。 比如&#xff0c;可以随意导入自己喜欢的词典&#xff0c;在应用内不仅能访问外文网页或电子文件&#xff0c;对不认识的单词可以直接点读&#xff0c;还有自带记忆曲线辅助背单词、自动列出重点单词等功能。 与其它应用起分屏使…

用什么词典可以翻译php,【欧陆词典】一款自定义词典库、支持划词翻译的万能词典...

本帖最后由 西山鹤城 于 2018-12-21 20:13 编辑 学英语的或者经常用到英语的人都知道&#xff0c;市面上最通用的某道和某山等查词软件的语料库不够完善&#xff0c;甚至释义有时候都是不太准确的&#xff0c;以网络释义居多&#xff0c;经常查一个词这些软件会给出很多资料、解…

欧路词典绿色版免费使用 v12.4.7附使用教程

欧路词典是一款具有权威的英语词典软件&#xff0c;除了支持海量扩充词库、海量词库网络词典&#xff0c;网络百科&#xff0c;第三方格式词典库&#xff0c;还有各种专业领域的词库也是一应俱全&#xff0c;而且也考虑到学生的使用环境&#xff0c;哪怕在离线环境下&#xff0…