前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >遗传算法可视化项目(2):获取信息

遗传算法可视化项目(2):获取信息

作者头像
不可言诉的深渊
发布2019-07-26 17:17:39
6050
发布2019-07-26 17:17:39
举报

昨天讲了一下实现遗传算法可视化的概述,没看过的人或者今天才关注的人点一下历史消息,或者点这里:

遗传算法可视化项目(1):概述

今天可没时间继续讲概述了,开始实现第一步:获取信息!

获取经纬度的方式太多了,百度地图API,高德地图API……今天,我不会调用一个地图的API,我要使用Python里面的一个强大的第三方库——geopy(地理数据处理库)来获取经纬度。要想使用geopy库,第一步必定是安装库,先点击开始菜单,然后找到Anaconda3(64-bit)(32位系统会显示32-bit)并单击,然后点击Anaconda Prompt,出来了一个类似于cmd命令行的东西,接着确保电脑连上了网,最后直接在那个命令行里面输入pip install geopy等待安装完成即可!

安装成功之后,就要使用它来获取经纬度了。我们只需要用到geopy包中的geocoders模块里面的一个叫Nominatim的类就行了(geopy库还有其他的功能,比如距离,在这里我就不一一详细讲解了,以后有时间我会讲,大家暂时就先参考一下官方文档:http://geopy.readthedocs.io/en/stable/),成功导入Nominatim类然后就是编写获取经纬度的函数了,函数参数类型是一个字符串(地名),函数返回值是一个元组(经度,纬度),代码如下图:

看上去确实比调用百度地图API简单了好多,但获取信息终究还是离不开爬虫!因为我的那个函数需要传入地名这个字符串参数,海南省好多个镇,我才懒得一个个去想,还是找一个地名网站爬一下吧,在这里我用的是这个网站:http://www.tcmap.com.cn/hainan/,进入网页之后随便找一个镇,右击“审查元素”,出来的差不多是这个:

找到信息源之后就是编写爬虫代码了,首先导入开发包:

然后就是读取网页,代码如下:

接着用BeautifulSoup进行解析:

最后就是写正则来进行筛选:

到这里,爬取地名的部分已经完成,接着只要结合geocodeN那个函数获取经纬度即可,上面的代码修改成这样就行了:

这样是不是意味着就可以写入文件了呢?!知道能不能写入文件运行一下看看,如果没有引起异常而崩溃就说明写入文件没问题,运行结果:

很明显出现了问题,出现问题的原因是因为爬到的地名无法解析,无法解析的地名的location就为None,None没有longitude属性。如何避免这种情况,也就只有try...except...了,修改代码如下:

解析不出来的地名只能pass掉了

,再次运行看看:

安静的结束了,没有一点异常,该把输出的内容写入文件了,修改代码如下:

写入文件之后,文件最后的空行一定要删除,到以后我会把这个文件变成一个二维数组(C语言实现)a[ROW][3](ROW表示有多少条信息,3表示一个字符串数组{地名,经度,纬度}),如果空行不删,到时候会数组越界(明明最后一行只有一个回车符,如果获取最后一行的第二列元素就会越界,因为最后一行没有第二列),但如果删掉了文件最后的空行之后最后一行就有第二列了,就不会越界了!我还会持续更新,文章最后附上项目地址:https://github.com/3480430977/DataVisualizationOfGA

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-07-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python机器学习算法说书人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档