前言:
如今姐妹们对“for循环ajax异步”大体比较关心,兄弟们都需要剖析一些“for循环ajax异步”的相关文章。那么小编同时在网摘上汇集了一些对于“for循环ajax异步””的相关知识,希望兄弟们能喜欢,看官们快快来学习一下吧!公司正计划做一个公交定位项目,木有站点数据和线路数据肿么办,总不能胡编乱造把,万一造的不准车站与线路跑河里去了多尴尬,高德与百度地图不是有车站数据么?把站点与线路数据抓出来不就好了么,说干就干,其他的爬虫脚本也用不着,直接JS开干。
先确认数据来源,既然项目内使用高德地图,那就去找高德API好了,良久之后觉得高德搜索服务API貌似可以搞一搞,居然可以定位数据城市位置,那敢情好,赶紧先来一发试试。
在浏览器地址栏直接敲入:你自己的KEY&types=150700&city=410102&citylimit=true&offset=50&page=1
参数说明:
key:自己去高德API注册账号申请去,反正免费
types:查询类型,高德提供的POI分类编码表(如下图),150702表示公交车站,但是却查不到数据,只能用150700车站相关来搞数据了。
POI分类编码表
city:查询城市,高德有提供的城市编码表(如下图),410100表示郑州,0371也表示郑州,410102表示中原区
城市编码表
citylimit:是否只返回指定城市数据(当然要true,我只要郑州市的数据,false表示优先城市但是依然不做范围限制)
offset:每页条数,高德说最好不超过25(居然还要翻页,好吧,毕竟是接口而不是专门让我抓数据用,我为啥写50,是因为就算你写再多他也给你强制50条,估计是为了性能考虑)
page:页数
为什么我不用市而是用区数据呢?这就是高德接口的意思啦~(你一次请求那么多干嘛?是不是要搞事情?量这么大数据库不要抗压哇?)最多给你900条
郑州市数据
不用就不用呗,要是太简单了还写个毛线脚本,那就循环多请求几次好了,把郑州市的区都来一遍,嗯,不错,中原区数量还好,696个, 其他的也都不多
中原区数据
得,数据有了,还是json格式的,直接用起来哇,搞起,直接放代码
var context ="";function snatch(){
var district = ["410102", "410103", "410104", "410105", "410106", "410108", "410122"];
//循环多个区域for (var k = 0; k < district.length; k++) {
var pagecount = 1;
var page = 1;
//每个区域数据需要翻页(API原因)
while(1==1) {
$.ajax({url: "你自己的KEY&types=150700&city=" + district[k] + "&citylimit=true&output=json&offset=50&page=" + page,
async: false,
success: function (json) {
//没有数据就跳出循环去找下个区if (json.count != 0) {
pagecount = Math.ceil(json.count / 49);
}
//拼接内容for (var i = 0; i < json.pois.length; i++) {
var id = json.pois[i].id;
var name = json.pois[i].name;
var address = json.pois[i].address;
var location = json.pois[i].location;
content += id + " " + name + " " + address + " " + location + "\r\n";
}
}
});
page++;
if(pagecount == page){
break;
}
}
}
download();
}
function download() {
var file = new File([content], "站点与线路数据.txt", {type: "text/plain;charset=utf-8"});
saveAs(file);
}
逻辑应该算是比较严谨了,ajax里面async: false参数需要加上,表示不使用异步,如果不加的话for循环跑完了你ajax的数据还没跑完,后面剩余的次数就不执行了
数据我拿了“id,站点名称,该站有哪些线路,车站的坐标”四组数据,导出txt文档,然后导入数据库
(因为是纯JS脚本没有写数据库连接啥的,所以使用了FileSaver.js这个小插件来做导出txt,当然jquery.js也是要有的,不然ajax从哪来)
<script src=""></script><script src=""></script>
在网页上随便一转悠找了这俩js直接引入,这样连js下载啥的都省了,执行后10秒左右,数据已经有了
接下来就是把数据导入数据库了,新建了四个字段,然后用navicat直接导入到表中
导入txt
用“|”分隔符区分字段
数据绑定字段
完成数据
如果需要统计线路或者坐标经纬度分离啥的,可以对js数据格式调整或者用sql对导入后的数据进行调整,随你意喽、
不信就试一试、
更多精彩内容请关注“IT实战联盟”哦~~~
标签: #for循环ajax异步 #js定位城市 #jquery加载js文件路径 #jquery表格城市分布 #jquery首字母城市