python获取经纬度_python之经纬度的获取
import xlrd
from xlrd import xldate_as_tuple
import json
import requests
import datetime
import openpyxl
import os
import time
from bs4 import BeautifulSoup
import requests
import random
#第一步Execl中数据的获取
class ExcelData():
def __init__(self, data_path, sheetname):
self.data_path = data_path
self.sheetname = sheetname
self.data = xlrd.open_workbook(self.data_path)
self.table = self.data.sheet_by_name(self.sheetname)
self.keys = self.table.row_values(0)
self.rowNum = self.table.nrows
self.colNum = self.table.ncols
def readExcel(self):
datas = []
for i in range(1, self.rowNum):
sheet_data = {}
for j in range(self.colNum):
c_type = self.table.cell(i,j).ctype
c_cell = self.table.cell_value(i, j)
if c_type == 2 and c_cell % 1 == 0:
c_cell = int(c_cell)
elif c_type == 3:
date = datetime.datetime(*xldate_as_tuple(c_cell,0))
c_cell = date.strftime('%Y/%d/%m %H:%M:%S')
elif c_type == 4:
c_cell = True if c_cell == 1 else False
sheet_data[self.keys[j]] = c_cell
datas.append(sheet_data)
return datas
#第二步对获取出Execl表中的数据匹配百度地图api获取经纬度
def get_dim(addr,tag,city,province):
url = f'http://api.map.baidu.com/place/v2/search?query={addr}&tag={tag}®ion={city}' \
f'&output=json&ak=pRoqaGDWc11FYHs4o6ANx51lWAUTcsW8'.format(addr,tag,city)
response = requests.get(url)
data = json.loads(response.text)
# print(data)
# print(data.get('results'))
try:
if len(data.get('results'))>0:
lat = data.get('results')[0].get('location').get('lat')
lng = data.get('results')[0].get('location').get('lng')
return str(lng)+','+str(lat)
else:
url1 = f'http://api.map.baidu.com/place/v2/search?query={city}&tag={tag}®ion={city}' \
f'&output=json&ak=pRoqaGDWc11FYHs4o6ANx51lWAUTcsW8'.format(addr, tag, city)
response = requests.get(url1)
data1 = json.loads(response.text)
if len(data1.get('results')) > 0:
lat1 = data1.get('results')[0].get('location').get('lat')
lng1 = data1.get('results')[0].get('location').get('lng')
return str(lng1)+','+str(lat1)
else:
url2 = f'http://api.map.baidu.com/place/v2/search?query={province}&tag={tag}' \
f'®ion={province}&output=json&ak=pRoqaGDWc11FYHs4o6ANx51lWAUTcsW8'.format(
addr, tag, city)
response = requests.get(url2)
data2 = json.loads(response.text)
if len(data2.get('results')) > 0:
lat2 = data2.get('results')[0].get('location').get('lat')
lng2 = data2.get('results')[0].get('location').get('lng')
return str(lng2)+','+str(lat2)
else:
return ""
except :
return ""
#
# #将获取到的代理IP存到ip_list中并返回列表
# def get_ip_list():
# # 随机代理获取的网站
# url = 'http://www.xicidaili.com/nn/'
# headers = {
# 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'
# }
# web_data = requests.get(url, headers=headers)
# soup = BeautifulSoup(web_data.text, 'lxml')
# ips = soup.find_all('tr')
# ip_list = []
# for i in range(1, len(ips)):
# ip_info = ips[i]
# tds = ip_info.find_all('td')
# ip_list.append(tds[1].text + ':' + tds[2].text)
# return ip_list
#
# #从代理IP列表中随机取出一个IP并返回
# def get_random_ip(ip_list):
# proxy_list = []
# for ip in ip_list:
# proxy_list.append('http://' + ip)
# proxy_ip = random.choice(proxy_list)
# proxies = {'http': proxy_ip}
# return proxies
if __name__ == "__main__":
#代理IP的使用
# ip_list = get_ip_list()
#获取文件夹名称以及路径
path = datePath
os.chdir(path)
date = datetime.datetime.now().strftime("%Y%m%d")
data_path = "经纬度{}.xlsx".format(date)
# print(data_path)
print("收到输入,开始执行经纬度获取!")
sheetname = "Sheet1"
get_data = ExcelData(data_path, sheetname)
datas = get_data.readExcel()
# print(datas)
print(len(datas))
flag = 1
#第三步存储到Execl表中固定位置
for data in datas:
try:
# ip = get_random_ip(ip_list)
addr = data.get('项目地址')
#对地址进行去“#”处理,否则有的地址带有的话获取不到数据
addr = addr.replace("#",'')
addr = addr.replace(",",'')
tag = data.get('用途')
city = data.get("城市")
province = data.get("省份")
if(addr):
print(addr)
# print(get_dim(addr,tag,city))
co = get_dim(addr,tag,city,province)
wb = openpyxl.load_workbook(data_path)
ws = wb['Sheet1']
ws.cell(row=flag + 1, column=6).value = co
wb.save(data_path)
wb.close()
flag += 1
if(co):
print(co)
# time.sleep(0.5)
except():
continue
# print(datas)
print("执行完毕,共",flag,"行数据!",'继续下一步操作转移数据...')
get_data = ExcelData(data_path, "Sheet1")
datas = get_data.readExcel()
# print(datas)
lista = []
for i in datas:
lista.append(i.get("地图坐标"))
# print(lista)
wb = openpyxl.load_workbook('{}.xlsx'.format(date))
ws = wb.worksheets[0]
for index, row in enumerate(ws.rows):
if index == 0:
row[23].value = '地图坐标'
else:
row[23].value = lista[index - 1]
wb.save('{}.xlsx'.format(date))
print("经纬度操作全部完成!")
python获取经纬度_python之经纬度的获取相关推荐
- python psutil模块_python之psutil模块(获取系统性能数据)
psutil模块 1.介绍 psutil是一个跨平台库(http://code.google.com/p/psutil/),能够轻松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网络等) ...
- python获取某地铁站经纬度_python基于百度地图获取指定的经纬度信息
在实际做项目的时候经常会遇上需要使用到某个位置经纬度的情况,这个位置的经纬度经常又是没有的,那么就需要基于公开的数据去获取了,这里基于百度地图提供的API来完成指定位置经纬度数据的获取,实现很简单,主 ...
- python 地图偏移_python 地图经纬度转换、纠偏的实例代码
python 地图经纬度转换.纠偏的代码如下所示: # -*- coding: utf-8 -*- import json import urllib import math x_pi = 3.141 ...
- python从命令行获取参数_python从命令行获取参数操作
python从命令行获取参数 一: 简单用法 从命令行获取参数两种方式: 1.通过sys.argv参数获取:代码如下: # -*- coding: utf-8 -*- import sys #获取输入 ...
- python如何获取输入_python如何从键盘获取输入实例
python中使用input()函数来获取用户输入 函数 input() 让程序暂停运行,等待用户输入一些文本,获取用户的输入后,Python将其存储到一个变量中,以方便后期使用. name = in ...
- python源码_Python爬虫入门之获取网页源码
爬虫,就是用程序代替人去访问网站,然后把网站上需要的东西拿下来:类似人输入网址,看到页面,然后复制粘贴,只是把这个过程自动化. 那么第一步就是去访问网站,要看到网站的页面,对程序来说也就是源码.笔者在 ...
- python 东方财富接口_Python从东方财富网站获取数据,python,的
python 获取东方财富网站的数据 #!/usr/bin/env python # -*- coding: utf-8 -*- import pandas as pd from selenium i ...
- python 地图偏移_python 地图经纬度转换、纠偏的实例代码 百度地图经纬度web纠偏怎么用...
天地图的经纬度 经过纠偏了么 给个例子证明下 如何用python实现百度地图墨卡托坐标跟经纬度坐标互转 麦哲伦机器: 系统设置 地图单位 自定义坐标系 横向墨卡托 原点纬度0 原点经度126(通化) ...
- python财务报表书籍_Python读财报-获取财务报表
学习了一段时间python,学以致用,结合财报练练手. 代码环境:WIN10.Aanconda3.Jupyter notebook 第三方库:pandas .os.tuahare.datetime.t ...
最新文章
- Node.js服务器启用Gzip压缩
- Java 中 Comparable 接口的意义和用法.
- hdu 2074 叠框
- [Tip]什么是3D 电影 和 4D立体电影?
- HTML5本地存储与会话存储
- 显著性目标检测matlab代码_YOLO v3 目标检测终篇(附完整 GitHub 代码)
- matlab 7.0安装教程
- rtmp直播推流软件推荐
- 电脑解锁后黑屏有鼠标_电脑开机后黑屏只有一个鼠标箭头怎么办_win10屏幕黑屏就剩鼠标如何修复...
- 面试的反杀-你有没有想要问我的
- redis命令之string类型setex命令用法详情
- STM32F103 FPGA架构多轴运动控制器 四轴运动控制器硬件方案
- 部署搭建DNS服务器
- Java学习day02-数据类型和运算符
- 算法练习(21):Frog Jump
- C++课程设计-失物招领系统
- 超诡异的自杀案,有点坑爹
- 大数据ClickHouse(二十):ClickHouse 可视化工具操作
- BUC冰川算法的python实现
- 计算机游戏测试,性能强劲又不张扬:IT之家游戏测试电脑推荐