上篇讲到  想要获取尽可能多的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. 开发者中心没有勾选 ipad却需要传宣传图片的解决方法

    1.通过模拟器 运行一个ipad 把ipad的比例调到100% 然后保存图片,如果没有适配ipad会出现上下左右黑色边框,这些不必在意,把保存的图片拖到开发者中心即可,勾选右侧 ,都使用12.9英寸图 ...

  2. win7 / mysql-8.0.11-winx64 安装的测坑步骤

    虚惊一场,主要问题是 Navicat Premium 连接 mysql8  Client does not support authentication . 1.  下载 官网下载压缩包: mysql ...

  3. python pyqt绘制直方图

    # -*- coding: utf-8 -*- """ In this example we draw two different kinds of histogram. ...

  4. [Dababase - MySQL- Linux] 数据库安装位置

    数据库安装最好是安装在 usr/local/ 里面,因为默认的很多东西都是指向这个文件夹中的.

  5. python 学习笔记 5 ----> dive into python 3

    字符串 文本:屏幕上显示的字符或者其他的记号 计算机认识的东西:位(bit)和字节(byte) 文本的本质:某种字符编码方式保存的内容. 字符编码:一种映射(显示的内容  ----> 内存.磁盘 ...

  6. English trip EM1 - PE2 My My name is... Teacher:Lamb Key: introduce myself

    课上内容(Lesson) Lamb let us does introduce myself. Make a "hangman" game at warm-up . How to ...

  7. urllib库详解 --Python3

    相关:urllib是python内置的http请求库,本文介绍urllib三个模块:请求模块urllib.request.异常处理模块urllib.error.url解析模块urllib.parse. ...

  8. C#生成.tlb文件初认识

    刚接手同事的代码,生成文件时,发现生成了一个对应的dll文件(应用程序中输出类型为类库),和一个对应的.tlb文件,但是报如下的错误: 那么.tlb文件是如何生成的呢? 选择项目->右键属性-& ...

  9. windows服务器安全管理工具——IISCrypto

    官方网站地址:https://www.nartac.com/Products/IISCrypto/ 下载地址:https://www.nartac.com/Products/IISCrypto/Dow ...

  10. 20175212童皓桢 在IDEA中以TDD的方式对String类和Arrays类进行学习

    20175212童皓桢 在IDEA中以TDD的方式对String类和Arrays类进行学习 要求 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 ...