数据已经打包分享,这里是数据百度云下载链接:
poi数据下载链接
即将踏入六月,酷暑袭来,一场没有硝烟的战场号角即将吹响---高考,高三的学子们正向心仪的大学发力。
选择一所大学很是重要,了解一所大学热度排名可以作为报考志愿的参考,不迷失方向。恰巧公司的微信群里有很多老师需要全国开设GIS(地理信息)和RS(遥感)专业的高校统计,所以我趁着端午休假无聊,防止长时间不用Python手生,准备爬取一些高校的信息。
于是开整~~~
通过全国高校查询 - 全国高校信息综合查询系统这个网站爬取数据源,首先正常打开网页,了解一下页面数据结构,看着很简单,应该很容易
但是我错了,使用正常爬取方式,得到的页面源码中没有表格信息,分析了一下,发现是通过JS生成的,那么正常的方法是不行了。是时候体会Python无所不能的时候了,我们可以用Selenium + PhantomJS + python(2.7)真实地模拟浏览器环境,等‘浏览器’加载完数据后,我们再抓取源码,保证网页源码的完整。
Selenium + PhantomJS + python(2.7)具体部署过程如下
1)、安装Python2.7和pycharm,这个应该不难,下载安装包安装即可
2)、然后安装Selenium,推荐用pycharm,这样超级方便
3)、PhantomJS
下载地址为http://phantomjs.org/download.html
下载为zip的文件,解压至任意路径都行
使用Selenium + PhantomJS + python(2.7)主要代码如下
from bs4 import BeautifulSoup
from selenium import webdriver
def get_university(url):
print(url)
driver = webdriver.PhantomJS(executable_path=r'D:\Python27\phantomjs-2.1.1-windows\bin\phantomjs.exe')
driver.get(url)
data = driver.page_source
# print(data)
driver.close()
bfcontent = BeautifulSoup(data, 'lxml')
剩下就是将源码中信息解析出来,由于这个网站不是纯官方的,红色字体高校名称估计有商业赞助的,那么排名也就~~~,你懂的,
所以在解析的过程中需要判断标签中class属性
主要代码如下:
这样就没啥大问题了,最终爬取到全国2784所全国高校排名热度信息。
作为一名GISer,想看看所有高校在地理位置上的展示,于是使用地理编码的API,python 正好也有geocoder这个库,这里奉上该库的github项目地址DenisCarriere/geocoder
该库支持丰富的在线编码提供商。本来想用ArcGIS和谷歌的,但是网络有些问题,处理速度巨慢,原因还是你懂得~~,最终用百度的,众所周知的原因,百度的坐标有一定的偏移,但是偏得也不会那么离谱,能用!
主要代码如下:
PS:使用百度的地理编码,需要开通开发者账号(地址为http://lbsyun.baidu.com/apiconsole/key),然后获取key就可以了
然后就得到了带有经纬度信息的全国高校信息和分布图,
然后又顺便爬取全国开设GIS(地理信息)和RS(遥感)专业的高校统计
源码和爬取结果表格下载地址:http://zhihu.esrichina.com.cn/page/download
poi数据获取:
1.地理遥感生态网
数据来源引用www.gisrs.cn