获取百度地图POI数据二(准备搜索关键词)
上篇讲到 想要获取尽可能多的POI数据 需要准备尽可能多的搜索关键字 那么这些关键字如何得来呢? 本人使用的方法是通过一些网站来获取这些关键词 http://poi.mapbar.com/这个网站有全国各地的POI数据 对各个城市的POI数据都有归类 我便是从这个网站上面获取了上海市的各个类别的关键词 比如上海市所有的门牌号码 公路名称 地铁名称等等 下面介绍如何获取这些信息
和获取百度POI数据所用的方法一样,都是通过分析这个网站的url然后替换其中的参数获取不同的数据 这个网站的数据分列在不同的类别中
每一个类别都对应一个url 这个可以通过查看网页源码查看
点击对应的url地址就可查看该类别包含的数据 比如查看上海所有中餐馆的名称
输入url http://poi.mapbar.com/shanghai/110/ 就可以看到所有中餐馆数据
当然 这些数据都是分页显示 对url稍作修改就能分页的形式查看数据 http://poi.mapbar.com/shanghai/110_1/ 表示中餐馆数据中的第一页数据 有的数据有多页 有的数据仅有一页 这些餐馆名称便可以当作在百度地图中搜索的关键词 通过程序下载这些网页再借助正则表达式便能够将每个关键词保存下来 要想让程序自动完成整个操作 首先要获取所有类别及其对应的关键词 这个可以通过将网页的html代码下来 自己创建一个网页 再引入jquery 借助jquery强大的选择器 将其中<a>标签的href属性给选取出来
以下是本人获取的所有类别及其url
有了这些数据 那么就可通过程序来完成所有关键词的获取了 以下是程序源码
- class Program
- {
- static void Main(string[] args)
- {
- string hrefInfo = File.ReadAllText(@"C:\Users\Administartor\Desktop\href.txt",Encoding.Default);
- List<string> list = hrefInfo.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries).ToList();
- DataTable dt = SqlHelper.ExecuteDataTable("select KWName,KWType from SHKW",CommandType.Text);
- List<string> kwList = new List<string>();
- foreach (DataRow row in dt.Rows)
- {
- kwList.Add(row["KWName"].ToString());
- }
- foreach (string href_item in list)
- {
- StringBuilder sb = new StringBuilder();
- string[] href_item_arr = href_item.Split(',');
- for (int i = ; i < ; i++)
- {
- try
- {
- HttpWebRequest request = (HttpWebRequest)WebRequest.Create(href_item_arr[].Substring(,href_item_arr[].Length-)+"_"+(i+)+"/");
- request.Method = "GET";
- HttpWebResponse response = (HttpWebResponse)request.GetResponse();
- Stream responseStream = response.GetResponseStream();
- StreamReader sr = new StreamReader(responseStream, Encoding.UTF8);
- string restring = sr.ReadToEnd();
- string[] strArr = restring.Split(new string[] { "<div class=\"sortC\">", "<div class=\"sortPage cl\" id=\"pageDiv\"" }, StringSplitOptions.None);
- Regex regex = new Regex("<a.*</a>");
- MatchCollection collection = regex.Matches(strArr[]);
- if (collection.Count == ) break;
- foreach (var item in collection)
- {
- string[] dataArr = item.ToString().Split(new string[] { ">", "</a>" }, StringSplitOptions.RemoveEmptyEntries);
- sb.Append(dataArr[] + ",");
- }
- }
- catch
- {
- break;
- }
- Console.WriteLine(href_item_arr[] + " " + (i + )+" "+(list.IndexOf(href_item)+)+"/"+list.Count);
- }//end for
- string[] kwArr = sb.ToString().Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
- DataTable dataDt = new DataTable();
- dataDt.Columns.Add("KWName", typeof(string));
- dataDt.Columns.Add("KWType", typeof(string));
- dataDt.Columns.Add("SaveTime", typeof(DateTime));
- string type=href_item_arr[].Replace("/", "").Replace("\\", "");
- foreach (string kw in kwArr)
- {
- if (kwList.Contains(kw)) continue;
- kwList.Add(kw);
- dataDt.Rows.Add(kw, type, DateTime.Now);
- }
- if (dataDt.Rows.Count != )
- {
- string res = "";
- if (SqlHelper.DataTableToDB("SHKW", dataDt)) res = "成功";
- else res = "失败";
- Console.WriteLine(res + "写入KW" + " " + dataDt.Rows.Count + "个");
- }
- else
- {
- Console.WriteLine(type+" 无数据");
- }
- }
- Console.WriteLine("OK");
- Console.ReadKey();
- }
- }
查看数据库保存的关键词的数据
- select * from SHKW
- select count(*) from SHKW
有了这一百万条关键词的信息 下一步就可以构建获取百度地图POI数据的url了 下篇接着讲解如何获取百度地图的POI数据~
获取百度地图POI数据二(准备搜索关键词)的更多相关文章
- 获取百度地图POI数据三(模拟关键词搜索)
上一篇博文中讲到如何获取用于搜索的关键词,并且已经准备好了一百五十万的关键词 这其中有门牌号码,餐馆酒店名称,公司名称,道路名称等.有了这些数据,我们就可以通过代码,模拟我们在百度地图的搜索框中搜 ...
- 基于 Golang 完整获取百度地图POI数据的方案
百度地图为web开发者提供了基于HTTP/HTTPS协议的丰富接口,其中包括地点检索服务,web开发者通过此接口可以检索区域内的POI数据.百度地图处于数据保护对接口做了限制,每次访问服务,最多只能检 ...
- 获取百度地图POI数据一(详解百度返回的POI数据)
POI是一切可以抽象为空间点的现实世界的实体,比如餐馆,酒店,车站,停车场等.POI数据具有空间坐标和各种属性,是各种地图查询软件的基础数据之一.百度地图作为国内顶尖的地图企业,其上具有丰富的POI数 ...
- 百度地图POI数据爬取,突破百度地图API爬取数目“400条“的限制11。
1.POI爬取方法说明 1.1AK申请 登录百度账号,在百度地图开发者平台的API控制台申请一个服务端的ak,主要用到的是Place API.检校方式可设置成IP白名单,IP直接设置成了0.0.0.0 ...
- 百度地图POI爬取
我们研究生的课程内容,做下笔记记录一下. 使用的python环境是python3.7 用的图大部分都是老师ppt里的图,懒得自己截了-- 申请百度开发者密匙 (1)注册百度用户,注册过的话,直接登录就 ...
- Android 百度地图开发(二)--- 定位功能之MyLocationOverlay,PopupOverlay的使用
转载请注明出处http://blog.csdn.net/xiaanming/article/details/11380619 这一篇文章主要讲解的是百度地图的定位功能,然后还有MyLocationOv ...
- 【百度地图API】建立全国银行位置查询系统(四)——如何利用百度地图的数据生成自己的标注
原文:[百度地图API]建立全国银行位置查询系统(四)--如何利用百度地图的数据生成自己的标注 摘要: 上一章留个悬念,"如果自己没有地理坐标的数据库,应该怎样制作银行的分布地图呢?&quo ...
- Android 百度地图开发(二)
这一篇文章主要解说的是百度地图的定位功能,然后还有MyLocationOverlay和PopupOverlay两个地图覆盖物的使用.Overlay是"图层"或"覆盖物&q ...
- iOS地图集成示例:百度地图POI检索
一.集成百度地图(傻瓜教程,以网站说明文档为准,此处罗列几项主要步骤) 1.登录 http://lbsyun.baidu.com 百度地图开发者平台,获取SDK和集成文档. 2.百度地图可以提供的 ...
随机推荐
- CentOS7攻克日记(一) —— 安装ISO
因为工作需要,开发环境需要装在centos7上面,这对用惯了ubuntu 这种Debian系的我,此刻只想说一句MMP 自从刚开始弄到现在VM里面已经躺了一堆的Centos7的尸体了,这次从头初始 ...
- 关于 Expression is not assignable 错误
1.在 Build Phases中导入 UIKit.framework 2.在pch中导入头文件 #import <UIKit/UIKit.h> 3.写一个分类 即可解决 贴出分类代码 ...
- Poj2018 Best Cow Fences
传送门 题目大意就是给定一个长度为 n 的正整数序列 A ,求一个平均数最大的,长度不小于 L 的子序列. 思路: 二分答案. Code: #include<iostream> #incl ...
- .bat批处理启动redis
背景: 最近,公司的项目开发,需要用到Redis,然而每天都需要到d盘下面的去启动redis很烦, 我是我就想写一个.bat启动文件放在桌面上,这样每天只要在桌面上点以下redis的bat文件就可以启 ...
- 【原】git常见用法
1.克隆 当前用户:git clone 192.165.53.15:/home/git/repo/Tegra/bsp/tx1_filesystem.git/ 非当前用户:git clone xxxxx ...
- maven构建web项目,用jetty测试的配置pom.xml
maven构建web项目,用jetty测试的配置pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmln ...
- 一条shell命令让多台Linux服务器执行
1.环境 局域网环境有3台Linux服务器,配置host文件 [root@master1 ~]# vim /etc/hosts 192.168.8.201 master1 192.168.8.202 ...
- 嵌入式Linux开发之uboot启动Linux整体流程分析
嵌入式Linux开发之uboot启动Linux整体流程分析 Uboot全称Universal Boot Loader,一个遵循GPL协议的的开源项目,其作用是引导操作系统,支持引导linux.VxWo ...
- D3DX 9.9 LEARNERNOTO
DirectX 9.0 3D游戏开发编程基础一.开发工具:vs2013 or VC++2005 Direct3D API http://msdn.microsoft.com/directx/sdk D ...
- JSP动作标签flush属性值
在JSP动作标签<jsp:include flush="true"/>,flush属性可以为true或false.flush默认值为false,当把flush属性赋值为 ...