
这样就可以获取想要的tag对应的内容了。
string text = "renderReverse&&renderReverse({\"status\":0,\"result\":{\"location\":{\"lng\":116.32298703399,\"lat\":39.983424051248},\"formatted_address\":\"北京市海淀区中关村大街27号1101-08室\",\"business\":\"中关村,人民大学,苏州街\",\"addressComponent\":{\"city\":\"北京市\",\"country\":\"中国\",\"direction\":\"附近\",\"distance\":\"7\",\"district\":\"海淀区\",\"province\":\"北京市\",\"street\":\"中关村大街\",\"street_number\":\"27号1101-08室\",\"country_code\":0},\"pois\":[{\"addr\":\"北京北京海淀海淀区中关村大街27号(地铁海淀黄庄站A1\",\"cp\":\"NavInfo\",\"direction\":\"内\",\"distance\":\"0\",\"name\":\"北京远景国际公寓(中关村店)\",\"poiType\":\"房地产\",\"point\":{\"x\":116.3229458916,\"y\":39.983610361549},\"tag\":\"房地产\",\"tel\":\"\",\"uid\":\"35a08504cb51b1138733049d\",\"zip\":\"\"},{\"addr\":\"海淀区中关村北大街27号\",\"cp\":\"NavInfo\",\"direction\":\"附近\",\"distance\":\"25\",\"name\":\"中关村大厦\",\"poiType\":\"房地产\",\"point\":{\"x\":116.32285606105,\"y\":39.983568897877},\"tag\":\"房地产写字楼\",\"tel\":\"\",\"uid\":\"06d2dffdaef1b7ef88f15d04\",\"zip\":\"\"},{\"addr\":\"中关村大街29\",\"cp\":\"NavInfo\",\"direction\":\"北\",\"distance\":\"62\",\"name\":\"海淀医院激光整形美容部\",\"poiType\":\"医疗\",\"point\":{\"x\":116.32317046798,\"y\":39.983016046485},\"tag\":\"医疗专科医院\",\"tel\":\"\",\"uid\":\"b1c556e81f27cb71b4265502\",\"zip\":\"\"},{\"addr\":\"中关村大街27号中关村大厦1层\",\"cp\":\"NavInfo\",\"direction\":\"附近\",\"distance\":\"1\",\"name\":\"中国人民财产保险中关村营业部\",\"poiType\":\"金融\",\"point\":{\"x\":116.32298182382,\"y\":39.983416864194},\"tag\":\"金融投资理财\",\"tel\":\"\",\"uid\":\"060f5e53137d20d7081cc779\",\"zip\":\"\"},{\"addr\":\"北京市海淀区\",\"cp\":\"NavInfo\",\"direction\":\"东北\",\"distance\":\"58\",\"name\":\"北京市海淀医院-输血科\",\"poiType\":\"医疗\",\"point\":{\"x\":116.322685383,\"y\":39.983092063819},\"tag\":\"医疗其他\",\"tel\":\"\",\"uid\":\"cf405905b6d82eb9b55f1e89\",\"zip\":\"\"},{\"addr\":\"北京市海淀区中关村大街27号中关村大厦二层\",\"cp\":\"NavInfo\",\"direction\":\"附近\",\"distance\":\"0\",\"name\":\"眉州东坡酒楼(中关村店)\",\"poiType\":\"美食\",\"point\":{\"x\":116.32298182382,\"y\":39.983423774823},\"tag\":\"美食\",\"tel\":\"\",\"uid\":\"2c0bd6c57dbdd3b342ab9a8c\",\"zip\":\"\"},{\"addr\":\"北京市海淀区中关村大街29号(海淀黄庄路口)\",\"cp\":\"NavInfo\",\"direction\":\"东北\",\"distance\":\"223\",\"name\":\"海淀医院\",\"poiType\":\"医疗\",\"point\":{\"x\":116.32199368776,\"y\":39.982083099537},\"tag\":\"医疗综合医院\",\"tel\":\"\",\"uid\":\"fa01e9371a040053774ff1ca\",\"zip\":\"\"},{\"addr\":\"北京市海淀区中关村大街28号\",\"cp\":\"NavInfo\",\"direction\":\"西北\",\"distance\":\"229\",\"name\":\"海淀剧院\",\"poiType\":\"休闲娱乐\",\"point\":{\"x\":116.32476945179,\"y\":39.982622137118},\"tag\":\"休闲娱乐电影院\",\"tel\":\"\",\"uid\":\"edd64ce1a6d799913ee231b3\",\"zip\":\"\"},{\"addr\":\"海淀黄庄地铁站旁\",\"cp\":\"NavInfo\",\"direction\":\"西北\",\"distance\":\"375\",\"name\":\"中发电子市场(中关村大街)\",\"poiType\":\"购物\",\"point\":{\"x\":116.32529945204,\"y\":39.981537146849},\"tag\":\"购物家电数码\",\"tel\":\"\",\"uid\":\"69130523db34c811725e8047\",\"zip\":\"\"},{\"addr\":\"北京市海淀区知春路128号\",\"cp\":\"NavInfo\",\"direction\":\"西北\",\"distance\":\"434\",\"name\":\"泛亚大厦\",\"poiType\":\"房地产\",\"point\":{\"x\":116.32600013033,\"y\":39.981516414381},\"tag\":\"房地产写字楼\",\"tel\":\"\",\"uid\":\"d24e48ebb9991cc9afee7ade\",\"zip\":\"\"}],\"poiRegions\":[],\"sematic_description\":\"北京远景国际公寓(中关村店)内0米\",\"cityCode\":131}})"
//只保留Json内容
text = text.Remove(text.Length - 1).Remove(0, 29)
JObject jo = (JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(text)
//获取指定TAG的内容
MessageBox.Show(jo["result"]["addressComponent"]["district"].ToString())
国家基础地理信息数据库是存储和管理全国范围多种比例尺、地貌、水系、居民地、交通、地名等基础地理信息,包括栅格地图数据库、矢量地形要素数据库、数字高程模型数据库、地名数据库和正射影像数据库等。
延伸:
国家基础地理信息系统是以形成数字信息服务的产业化模式为目标,通过对各种不同技术手段获取的基础地理信息进行采集、编辑处理、存贮,建成多种类型的基础地理信息数据库,并建立数据传输网络体系,为国家和省(市、自治区)各部门提供基础地理信息服务。它是一个面向全社会各类用户、应用面最广的公益型地理信息系统。是一个实用化的、长期稳定运行的信息系统实体。是我国国家空间数据基础设施(NSDI)的重要组成部分,是国家经济信息系统网络体系中的一个基础子系统。
在进行定量城市分析时(如研究某市某片区的空间分析),需要用到地理位置信息以及现状设施建筑等的分布情况,这就必须获得相关的地理坐标信息。因此数据的获取与处理是进行定量城市分析所需的前置作业,此阶段的工作决定了后续分析的效度和质量。
这里采集数据使用到的工具是火车头采集器8.5。
火车头采集器一款互联网数据抓取、处理、分析,挖掘软件,可以抓取网页上散乱分布的数据信息,并通过一系列的分析处理,准确挖掘出所需数据。
特点:采集不限网页,不限内容;
分布式采集系统,提高效率;
支持PHP和C#插件扩展,方便修改处理数据,但需要懂得火车头规则或者正则表达式。
API是一些预先定义的函数,目的是提供应用程序开发人员基于某软件或硬件得以访问一组程序的能力,而又无需访问源码,或理解程序内部工作机制的细节。API服务商在提供数据的同时也在收集用户的信息,这是一个双向过程。
百度地图Web服务API中提供了地点检索服务、正/逆地理编码服务、路线规划、批量算数、时区服务、坐标转换服务及鹰眼轨迹服务等。其中地点检索服务(又名Place API),提供多种场景的地点(POI)检索功能,包括城市检索、周边检索、矩形区域检索。
以通过百度地图API获取绵阳市饭店数据为例。
1.申请百度地图开放平台开发者秘钥
首先打开百度地图开放平台(http://lbsyun.baidu.com/index.php?title=%E9%A6%96%E9%A1%B5),点击右上角控制台,再点击应用管理→我的应用→创建应用,申请开发者秘钥(ak),并选择以下服务项。
2.通过接口获取详细地理信息
开发者可以通过接口获取地点(POI)基础或详细地地理信息。其返回的是Json类型数据(一个区域最大返回数是400,每页最大返回数为20)。当某区域、,某类POI个数多于400时,可以选择把该区域分成子区域进行检索或通过矩形、圆形区域方式进行检索查阅页面中Place检索格式和实例如下:
格式: http://api.map.baidu.com/place/search?&query=关键字&bounds=查询区域&output=输出格式类型&key=用户密钥
实例: http://api.map.baidu.com/place/search?&query=ATM机&bounds=绵阳&output=json&ak=你的密钥 (你的秘钥就是上一步申请得到的)
(什么是Place API详细说明可见此网址https://developer.baidu.com/map/place-api.htm#.E4.BB.80.E4.B9.88.E6.98.AFPlace_API.EF.BC.9F)
其中“关键字”、“查询区域”、“输出格式类型”、“用户秘钥”可以根据自己的需要替换,而page_num为选填项,表示分页码,因为只有设置了page_num字段才会在结果页面中返回标识总条数的total字段,方便在火车采集器中做相关设置,如下:
http://api.map.baidu.com/place/v2/search?&query=饭店&tage=美食&region=绵阳&output=json&page_num=0&ak=kRA0vIfH6UHEVYUAhPLnkS72BwtVBYnI
访问该网址,返回结果如下图:
3.用火车头采集器采集地理信息
在火车头软件中,首先点击左上角的“新建”,然后点击“分组”进入新建界面自己命名然后保存既可。建好分组后,再点击新建。然后点击“任务”,命名为“百度API”。
然后在第一步--采集规则页面,点击“添加”键,在添加开始采集网址页面,选择“批量/多页”方式获取地址格式,在地址格式一栏中填入Place检索链接,并将page_num字段用(*)标识为变量,选择等差数量方式,在项数与返回Json结果中total字段一致,公差为1。
在访问百度地图API接口返回的Json网页中,在需要提取信息处复制该条信息。例如复制此处获得“name”:周肥肠(总店)”,。
在火车头采集器第二步采集内容规则页面,添加标签,标签名填入“名称”,提取数据方式处选择“前后截取”,在标签编辑页用(*)代替要采集的内容,并将要采集内容的前后内容分别填入“开始字符串”、“结束字符串处”。
经度、纬度的获取方式与“名称”方式相同。
添加完成后,点击规则测试页面的“测试”键,对POI的“名称”、“经度”、“纬度”三种标签进行测试,测试可以得到正确获取信息之后,进入“第三步:发布内容设置”页面,选择“方式二:保存为本地Word,Excel,Html,Txt等文件”,并制作与标签相对应的Gsv格式的模板,完成后,点击“保存”按钮,采集数据就完成了。
退回到主界面,在“采网页”及“采内容”下打对勾,点击开始任务,即可完成百度地图绵阳市饭店的数据获取。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)