上篇讲到  想要获取尽可能多的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数据二(准备搜索关键词)的更多相关文章

  1. 获取百度地图POI数据三(模拟关键词搜索)

    上一篇博文中讲到如何获取用于搜索的关键词,并且已经准备好了一百五十万的关键词   这其中有门牌号码,餐馆酒店名称,公司名称,道路名称等.有了这些数据,我们就可以通过代码,模拟我们在百度地图的搜索框中搜 ...

  2. 基于 Golang 完整获取百度地图POI数据的方案

    百度地图为web开发者提供了基于HTTP/HTTPS协议的丰富接口,其中包括地点检索服务,web开发者通过此接口可以检索区域内的POI数据.百度地图处于数据保护对接口做了限制,每次访问服务,最多只能检 ...

  3. 获取百度地图POI数据一(详解百度返回的POI数据)

    POI是一切可以抽象为空间点的现实世界的实体,比如餐馆,酒店,车站,停车场等.POI数据具有空间坐标和各种属性,是各种地图查询软件的基础数据之一.百度地图作为国内顶尖的地图企业,其上具有丰富的POI数 ...

  4. 百度地图POI数据爬取,突破百度地图API爬取数目“400条“的限制11。

    1.POI爬取方法说明 1.1AK申请 登录百度账号,在百度地图开发者平台的API控制台申请一个服务端的ak,主要用到的是Place API.检校方式可设置成IP白名单,IP直接设置成了0.0.0.0 ...

  5. 百度地图POI爬取

    我们研究生的课程内容,做下笔记记录一下. 使用的python环境是python3.7 用的图大部分都是老师ppt里的图,懒得自己截了-- 申请百度开发者密匙 (1)注册百度用户,注册过的话,直接登录就 ...

  6. Android 百度地图开发(二)--- 定位功能之MyLocationOverlay,PopupOverlay的使用

    转载请注明出处http://blog.csdn.net/xiaanming/article/details/11380619 这一篇文章主要讲解的是百度地图的定位功能,然后还有MyLocationOv ...

  7. 【百度地图API】建立全国银行位置查询系统(四)——如何利用百度地图的数据生成自己的标注

    原文:[百度地图API]建立全国银行位置查询系统(四)--如何利用百度地图的数据生成自己的标注 摘要: 上一章留个悬念,"如果自己没有地理坐标的数据库,应该怎样制作银行的分布地图呢?&quo ...

  8. Android 百度地图开发(二)

    这一篇文章主要解说的是百度地图的定位功能,然后还有MyLocationOverlay和PopupOverlay两个地图覆盖物的使用.Overlay是"图层"或"覆盖物&q ...

  9. iOS地图集成示例:百度地图POI检索

    一.集成百度地图(傻瓜教程,以网站说明文档为准,此处罗列几项主要步骤) 1.登录  http://lbsyun.baidu.com  百度地图开发者平台,获取SDK和集成文档. 2.百度地图可以提供的 ...

随机推荐

  1. pycharm使用selenium之前

    2.python安装好后,查看你的pycharm输出控制台,第一行就写了你所使用的python.exe的路径,如下图箭头处所示: 检查python使用的是不是你刚刚安装的,如果不是,换成你刚刚安装的p ...

  2. Linux常用命令——关机重启命令

    Linux常用命令--关机重启命令 Linux  shutdown 语法:shutdown [选项] 时间 -c 取消前一个关机命令 -h 关机 -r 重启 示例:shutdown -r now 其它 ...

  3. Fiddler抓取HTTPS请求配置

    由于fiddler安装后默认只能抓取http请求,如果需要抓取https请求需要进行配置.配置方式:Tools--->Options--->HTTPS,勾选CaptureHTTPS CON ...

  4. 初学者易上手的SSH-spring 01控制反转(IOC)

    这章开始学习SSH中最后的一个框架spring.Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用. 首先就来学习一下I ...

  5. ArcGIS Pro开发Web3D应用(4)——Portal发布三维没有“发布”选项解决

    如题,将三维场景包.slpk上传并发布,未看到发布选项. 问题核心就在于环境没配置好,主要有2点: 1.验证联合托管状态 需要将托管服务器与Portal进行联合,并进行验证,此情况需要在WebAdap ...

  6. Ubuntu 16.04安装httpd

    1.下载httpd源码(当前版本为2.4.37) http://httpd.apache.org/download.cgi 2.解压编译 tar -zxf httpd-2.4.37.tar.gzcd ...

  7. English trip V2 - 5 Technology Teacher:Taylor Key:adjective + preposition

    In this lesson you will learn to talk about technology and innovation. 课上内容(Lesson) What is your fav ...

  8. JSON & XML

    什么是JSON? JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子 ...

  9. multiThread (一)

    并发系列(1)之 Thread 详解   阅读目录 一.线程概述 二.线程状态 三.源码分析 1. native注册 2. 构造方法和成员变量 3. start 方法 4. exit 方法 5. 弃用 ...

  10. JSP 标准标签库JSTL

    JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签. 除了这些,它还提供 ...