上篇讲到  想要获取尽可能多的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. JAVA-变量

    静态变量只能在类主体中定义,不能在方法中定义

  2. 详解MySQL中concat函数的用法(连接字符串)

    MySQL中concat函数 使用方法: CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. 注意: 如果所有参数均为非二进制 ...

  3. SQL添加事务处理

    --modi by lmt declare @errorSum int --记录错误数 begin Create table #CheckreqAccState(CheckReqID varchar( ...

  4. leetcode刷题——一些算法技巧总结1.0

    运算符优先级,简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符 把数字取反,可以作为一种标记 pythonlast = ...

  5. Oracle解决ora-01653 无法通过1024扩展

    综合上述检查结果,可断定遇到的问题是因为可能性1—表空间不足导致.解决办法也就是扩大表空间 扩大表空间的四种方法: 1.增加数据文件 ALTER TABLESPACE ***_TRD ADD DATA ...

  6. MVC与MVVM关系图解

  7. Analysis servlet

    @WebServlet("/cdiservlet") public class NewServlet extends HttpServlet { private Message m ...

  8. pc端结合canvas实现简单签名功能

    需求:业务员做提交时要签名... 代码不多简单易懂,直接看代码 <!DOCTYPE html> <html> <head> <meta charset=&qu ...

  9. 云计算概述和KVM虚拟化

    前言: 近些年一直听着 虚拟化.云计算.公有云.私有云.混合云这些个概念,一直想着....这些概念要用什么技术实现? 一.云计算的概念 1.传统IDC机房面都会临什么问题? 任何新事物都是由需求催生的 ...

  10. python - 闭包,迭代器

    一.第一类对象 1.函数名的运用     函数名是一个变量,但它是一个特殊的变量,与括号配合可以执行函数的变量     1.函数名的内存地址 def func1(): print('你是谁,你来自哪里 ...