上篇讲到  想要获取尽可能多的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. Zynq启动流程

    前言 Zynq启动流程和ARM处理器类似,PS部分是启动和配置过程的主设备,芯片引导必须由处理器驱动,系统上电复位后会读取设备模式引脚来决定从什么设备启动芯片.如下表Boot Devices条目所示, ...

  2. 1、docker容器技术基础入门

    Docker和传统虚拟机的区别               参考文章: https://lwn.net/Articles/531114/    操作中的命名空间详解 https://blog.yadu ...

  3. 线程(Thread,ThreadPool)、Task、Parallel

    线程(Thread.ThreadPool) 线程的定义我想大家都有所了解,这里我就不再复述了.我这里主要介绍.NET Framework中的线程(Thread.ThreadPool). .NET Fr ...

  4. Halcon 标定与准确测量

  5. ftp定时任务-日志备份

    1. 安装 #yum -y install vsftpd 2. 修改配置文件 #vi /etc/vsftpd/vsftpd.conf FTP服务器的默认目录是/var/ftp,而且当用户以匿名方式登录 ...

  6. jieba库的使用和好玩的词云

    1.jieba库基本介绍 (1).jieba库概述 jieba是优秀的中文分词第三方库 - 中文文本需要通过分词获得单个的词语         - jieba是优秀的中文分词第三方库,需要额外安装 - ...

  7. BP neural network optimized by PSO algorithm on Ammunition storage reliability prediction 阅读笔记

    1.BP neural network optimized by PSO algorithm on Ammunition storage reliability prediction 文献简介文献来源 ...

  8. python 近义词库包 synonyms 的使用

    最近接触到nlp的一些东西,需要找出中文词语的近义词,也接触到了一个synonyms 的库, 分词,去停用词,word2vector  等 一些列nlp 的操作,还可以输出中文词语的近义词 https ...

  9. 多重if-else语句

    C语言自学之多重if-else语句 Dome : 某游戏对不同等级的积分的玩家赋予不同的荣誉称号,其对应关系如下: 积分>=10000分为钻石玩家 积分>=5000并且<10000为 ...

  10. exe所在路径

    procedure TForm1.btn1Click(Sender: TObject); begin //完整路径 E:\UsrSoft\Desktop\FileNameDemo\Project1.e ...