# 以下内容为原创,转载请注明出处

1 import xlrd #读xlsx

2 import xlsxwriter #写xlsx

3 import urllib.request #url请求,Python3自带,Python2与3中urllib的区别见:http://blog.csdn.net/Jurbo/article/details/52313636

4 import os #创建output文件夹

5 import glob #获取文件夹下文件名称

6 import time #记录时间

7 import json #读取json格式文件

8

9 #本函数完成文件合并。单独保存是为了1.方便不同的用途;2.减少内存;3.在应用到其他网站时,可以断点续爬,降低中断风险

10 defxlsx_merge(folder,header,filename):11 fileList =[]12 for fileName in glob.glob(folder + "*.xlsx"):13 fileList.append(fileName)14 fileNum =len(fileList)15 matrix = [None] *fileNum16 for i inrange(fileNum):17 fileName =fileList[i]18 workBook =xlrd.open_workbook(fileName)19 try:20 sheet =workBook.sheet_by_index(0)21 exceptException as e:22 print(e)23 nRows =sheet.nrows24 matrix[i] = [0]*(nRows - 1)25 nCols =sheet.ncols26 for m in range(nRows - 1):27 matrix[i][m] = ["0"]*nCols28 for j in range(1,nRows):29 for k inrange(nCols):30 matrix[i][j-1][k] =sheet.cell(j,k).value31 fileName = xlsxwriter.Workbook(folder + filename + ".xlsx")32 sheet = fileName.add_worksheet("merged")33 for i inrange(len(header)):34 sheet.write(0,i,header[i])35 rowIndex = 1

36 for fileIndex inrange(fileNum):37 for j inrange(len(matrix[fileIndex])):38 for colIndex inrange (len(matrix[fileIndex][j])):39 sheet.write(rowIndex,colIndex,matrix[fileIndex][j][colIndex])40 rowIndex += 1

41 print("已完成%d个文件的合并"%fileNum)42 fileName.close()43

44 #本函数完成获取POI

45 def poi_by_adcode_poicode(folder,city_file = "city",poi_file = "poi",result_file = "result",merge_or_not = 1):46 '''要求:文件为XLSX格式表格。47 列表均在表格的第一页,且第一列为名称,第二列为编码。48 因为是创建目录,folder要求不为根目录。49 要求输入表在目录的input文件夹中,本函数将结果输出到目录下的output文件夹下50 '''

51 city_file =city_file52 poi_file =poi_file53 result_file =result_file54 merge_or_not =merge_or_not55 header_full = ["id","name","type","typecode","biz_type","address","location","tel","pname","cityname","adname","rating","cost"]

56 header = ["id","name","type","typecode","biz_type","address","location","tel","pname","cityname","adname"]57 offset = 25 #实例设置每页展示10条POI(官方限定25条)

58 output_folder = folder + "output/"

59 #创建输出路径

60 ifos.path.isdir(output_folder):61 pass

62 else:63 os.makedirs(output_folder)64 #读取列表

65 city_sheet = xlrd.open_workbook(folder+ "input/" + city_file + ".xlsx").sheet_by_index(0)66 poi_type_sheet = xlrd.open_workbook(folder+ "input/" + poi_file + ".xlsx").sheet_by_index(0)67 city_list =city_sheet.col_values(0)68 city_code_list = city_sheet.col_values(1)69 poi_type_list = poi_type_sheet.col_values(1)70 #指示工作完成量

71 total_work = (city_sheet.nrows - 1) *(poi_type_sheet.nrows - 1)72 work_index = 1

73 print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) + ":抓取开始!")74 for city_index in range(1,len(city_list)):75 for poi_type_index in range(1,len(poi_type_list)):76 workbook =xlsxwriter.Workbook(output_folder + str(city_list[city_index]) + str(poi_type_list[poi_type_index]) + ".xlsx") #新建工作簿

77 sheet = workbook.add_worksheet("result") #新建“poiResult”的工作表

78 for col_index inrange(len(header_full)):79 sheet.write(0,col_index,header_full[col_index]) #写表头

80 row_index = 1

81 for page_index in range(1, 101):82 try:83 url = "http://restapi.amap.com/v3/place/text?&keywords=&types=" + str(poi_type_list[poi_type_index]) + "&city=" + city_code_list[city_index] + "&citylimit=true&offset=" + str(offset) + "&page="+ str(page_index) + "&key=你的key&extensions=all"

84 #请求的结构化url地址如上,见:http://lbs.amap.com/api/webservice/guide/api/search/

85 data = json.load(urllib.request.urlopen(url))["pois"]86 for i inrange(offset):87 for col_index inrange(len(header)):88 sheet.write(row_index, col_index, str(data[i][header[col_index]]))89 sheet.write(row_index,len(header),str(data[i]["biz_ext"]["rating"]))90 sheet.write(row_index,len(header) + 1,str(data[i]["biz_ext"]["cost"]))91 row_index += 1

92 exceptException:94 break

95 workbook.close()96 print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) + ":" + city_list[city_index] + " " + poi_type_list[poi_type_index] + "已获取!进度:%.2f%%" %(work_index / total_work *100))97 work_index += 1

98 print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) + ":所有地区各类别POI获取完毕")99 if merge_or_not == 1:100 xlsx_merge(output_folder, header_full, result_file)101 print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) + ":已对文件进行合并!")102 else:103 print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) + ":未进行合并!")104 print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) + ":所有工作完成!")105

106 #使用

107 poi_by_adcode_poicode("E:/test/","city", "poi", "result", 1)

python gps与高德地图poi_Python——使用高德API获取指定城指定类别POI并实现XLSX文件合并...相关推荐

  1. js 跳转到指定位置 高德地图_JS引入高德地图定位

    在此记录一下X项目使用高德地图的思路高德地图(X项目前端框架是Jquery) 2准备工作(封装方法,以便直接调用) -2.2封装超时方法($.timeOut-参考) -2.3封装异步调用地图的方法 / ...

  2. 未来交通已经“上线” 高德地图智慧交通合作已攻150城,半年大增约五成

    近日,高德地图宣布未来交通再下一城,联姻广东省公安厅推出网上车管所等6类24项功能的未来交通项目. 据记者了解,该项目至2017年12月31日已经完成试运行一月,效果明显,为广东省用户提供信息服务超过 ...

  3. 高德地图车机版API演示程序

    高德地图车机版API演示程序 做车载的应该和这个程序打交道打的比较多吧,这里是我今天写的一个实现了他的API的一个演示程序 首先我们来看下他的官网. http://lbs.amap.com/api/a ...

  4. 高德地图——浏览器定位+点击获取经纬度+去除高德百度地图左下角logo

    高德地图--浏览器定位+点击获取经纬度+去除高德百度地图左下角logo 1.代码 <!doctype html> <html> <head><meta cha ...

  5. Fragment 增加高德地图的 com.amap.api.maps.SupportMapFragment

    1> 在 Fragment 增加高德地图的 com.amap.api.maps.SupportMapFragment 直接通过在XML布局文件中添加 <fragment android:i ...

  6. 高德地图驾车路径规划API,获取两地点之间的驾车里程和时间

    高德地图驾车路径规划API,获取两地点之间的驾车里程和时间 import pandas as pd import requests import jsondef get_dis_tm(origin, ...

  7. ios 持续获取定位 高德地图_iOS 定位 高德地图

    最近项目中有需求需要使用定位,上报经纬度和地址信息,还有可以在地图界面随意选择地点,因为和后台经纬度匹配的问题,所以选择了高德地图(百度地图经纬度是有自己算法的). 1.定位 iOS定位SDK提供后台 ...

  8. android 高德地图 lbstraceclient,安卓高德地图定位篇-(1)

    安卓高德地图定位.先看效果图: STEP1: 先去高德开放平台注册账号,这个不用多说吧 网址:https://lbs.amap.com/ 之后再去控制台-应用管理找到自己的key,如下图所示 STEP ...

  9. android+高德地图教程,Android高德地图开发(三)地图简单操作

    一.概述 上一节中我们了解到地图的定位,图层切换,离线地图等基础操作,接下来学习地图的基本操作. 二.本章内容 --- 地图交互设置 --- 地图绘制 1.地图交互设置 在使用地图的时候,不可避免的会 ...

最新文章

  1. 小雷郑重承诺:在2017年之前,对大学毕业4年以来的所有努力和探索,做一个全面客观的总结,技术研究、工作创业、投资理财、朋友感情等...
  2. Ubuntu18.04 安装 gnuplot
  3. silverlight元素FrameworkElement.LayoutUpdated布局变化事件
  4. 大话设计模式(二 代码规范、重构)
  5. 转发:Datawhale第七期组队学习计划
  6. OpenGL渲染水water
  7. __attribute__ 之weak,alias属性
  8. linux dd 清屏 of=/dev/mem,Linux系统简介分区基础命令(ADMIN01-2)(示例代码)
  9. 5、UmbracoNewsSite:添加css和js文件
  10. html中使用过渡不显示,CSS3过渡不适用于显示属性
  11. Element Form表单布局(一行多列)
  12. Android Track的play流程(三十二)
  13. Hdu 1303 Doubles
  14. SecureCRT自动化脚本编写
  15. NAB展会BOSMA博冠8K全系8K摄像机产品惊艳亮相
  16. 打开或关闭windows功能时,提示“出现错误。并非所有的功能被成功更改” 已解决
  17. java 翻译 go语言_cgo 和 Go 语言是两码事【已翻译100%】...
  18. python九九乘法表的实例_python九九乘法表的实例
  19. 自媒体文章一文多发的几种方式
  20. 教你如何去除电脑QQ聊天窗口上的广告?

热门文章

  1. linux+广播程序,Linux系统下广播程序制作介绍(上) (3)
  2. linux六个标准目录,Linux基本目录规范——XDG
  3. class 'memcache' not found php,PHP Fatal error: Class 'Memcache' not found in
  4. 农艺师需要职称计算机,评农艺师需要发表几篇论文?
  5. 有向图的强连通分量,割点与桥
  6. 不定高宽的元素居中的方法
  7. POJ 2590 Steps (ZOJ 1871)
  8. fglrx 9.8与kernel 2.6.30
  9. java 蓝桥杯算法训练 P0501
  10. (4)ISE14.7 ChipScope使用流程(FPGA不积跬步101)