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}&region={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}&region={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'&region={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之经纬度的获取相关推荐

  1. python psutil模块_python之psutil模块(获取系统性能数据)

    psutil模块 1.介绍 psutil是一个跨平台库(http://code.google.com/p/psutil/),能够轻松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网络等) ...

  2. python获取某地铁站经纬度_python基于百度地图获取指定的经纬度信息

    在实际做项目的时候经常会遇上需要使用到某个位置经纬度的情况,这个位置的经纬度经常又是没有的,那么就需要基于公开的数据去获取了,这里基于百度地图提供的API来完成指定位置经纬度数据的获取,实现很简单,主 ...

  3. python 地图偏移_python 地图经纬度转换、纠偏的实例代码

    python 地图经纬度转换.纠偏的代码如下所示: # -*- coding: utf-8 -*- import json import urllib import math x_pi = 3.141 ...

  4. python从命令行获取参数_python从命令行获取参数操作

    python从命令行获取参数 一: 简单用法 从命令行获取参数两种方式: 1.通过sys.argv参数获取:代码如下: # -*- coding: utf-8 -*- import sys #获取输入 ...

  5. python如何获取输入_python如何从键盘获取输入实例

    python中使用input()函数来获取用户输入 函数 input() 让程序暂停运行,等待用户输入一些文本,获取用户的输入后,Python将其存储到一个变量中,以方便后期使用. name = in ...

  6. python源码_Python爬虫入门之获取网页源码

    爬虫,就是用程序代替人去访问网站,然后把网站上需要的东西拿下来:类似人输入网址,看到页面,然后复制粘贴,只是把这个过程自动化. 那么第一步就是去访问网站,要看到网站的页面,对程序来说也就是源码.笔者在 ...

  7. python 东方财富接口_Python从东方财富网站获取数据,python,的

    python 获取东方财富网站的数据 #!/usr/bin/env python # -*- coding: utf-8 -*- import pandas as pd from selenium i ...

  8. python 地图偏移_python 地图经纬度转换、纠偏的实例代码 百度地图经纬度web纠偏怎么用...

    天地图的经纬度 经过纠偏了么 给个例子证明下 如何用python实现百度地图墨卡托坐标跟经纬度坐标互转 麦哲伦机器: 系统设置 地图单位 自定义坐标系 横向墨卡托 原点纬度0 原点经度126(通化) ...

  9. python财务报表书籍_Python读财报-获取财务报表

    学习了一段时间python,学以致用,结合财报练练手. 代码环境:WIN10.Aanconda3.Jupyter notebook 第三方库:pandas .os.tuahare.datetime.t ...

最新文章

  1. Node.js服务器启用Gzip压缩
  2. Java 中 Comparable 接口的意义和用法.
  3. hdu 2074 叠框
  4. [Tip]什么是3D 电影 和 4D立体电影?
  5. HTML5本地存储与会话存储
  6. 显著性目标检测matlab代码_YOLO v3 目标检测终篇(附完整 GitHub 代码)
  7. matlab 7.0安装教程
  8. rtmp直播推流软件推荐
  9. 电脑解锁后黑屏有鼠标_电脑开机后黑屏只有一个鼠标箭头怎么办_win10屏幕黑屏就剩鼠标如何修复...
  10. 面试的反杀-你有没有想要问我的
  11. redis命令之string类型setex命令用法详情
  12. STM32F103 FPGA架构多轴运动控制器 四轴运动控制器硬件方案
  13. 部署搭建DNS服务器
  14. Java学习day02-数据类型和运算符
  15. 算法练习(21):Frog Jump
  16. C++课程设计-失物招领系统
  17. 超诡异的自杀案,有点坑爹
  18. 大数据ClickHouse(二十):ClickHouse 可视化工具操作
  19. BUC冰川算法的python实现
  20. 计算机游戏测试,性能强劲又不张扬:IT之家游戏测试电脑推荐

热门文章

  1. 整合区域医疗资源,共享社区病源,实现三级就诊
  2. Android|重写ScrollView实现页面越界回弹效果
  3. 【Other】最近在研究的, Java/Springboot/RPC/JPA等
  4. 130个微信小程序源码资源免费领取
  5. 52单片机 (十七)AD DA 数模转换
  6. 数字孪生智慧医院:构建三维医院园区可视化管控(一)
  7. Cannot write to ‘’ (Success) 解决办法
  8. 010201信息收集
  9. 李永乐 线性代数 强化篇 第一章
  10. JS开发常用方法封装