获取百度API坐标

#coding=utf-8
import requests
import sys
reload(sys)
sys.setdefaultencoding(‘utf-8‘)
import re,csv
import threading,time
proxies = {‘http‘: ‘http://username:[email protected]:8080‘,
           ‘https‘: ‘https://username:[email protected]:8080‘}

def fuc(apikey):
    while True:
        try:
            with lock:
                line = all_lines.pop(0)
            if (not line[34]) or (line[34] == ‘0‘):
                addr = (line[10]+line[12]+line[14]).replace(‘#‘,‘‘).decode(‘utf-8‘)[-42:].encode(‘utf-8‘)
                # addr_str = addr.decode(‘utf-8‘)
                # addr = addr_str[-100:]#地址过长搜索不到
                url = ‘http://api.map.baidu.com/geocoder/v2/?address=%s&output=json&ak=%s&callback=showLocation‘ % (addr, apikey)
                r = requests.get(url=url, proxies=proxies).content
                status = re.findall(‘"status":(.*?),‘, r, re.S)
                if int(status[0]) in [0,1,2]:
                    lng = re.findall(‘"lng":(.*?),‘, r, re.S)
                    lat = re.findall(‘"lat":(.*?)}‘, r, re.S)
                    if lng:
                        line[34] = lng[0]
                        line[35] = lat[0]
                        writer.writerow(line)
                        csvFile.flush()
                    else:
                        print line[0]
                        print r
                        writer.writerow(line)
                        csvFile.flush()
                else:
                    print line[0]
                    print r
                    writer.writerow(line)
                    csvFile.flush()
                    break
            else:
                writer.writerow(line)
                csvFile.flush()
        except IndexError:#pop完,进程结束
            break
        except Exception as e:
            print e
    print ‘结束时间:‘+time.strftime(‘%Y%m%d_%H%M%S‘,time.localtime())

print ‘程序开始时间:‘ + time.strftime(‘%Y%m%d_%H%M%S‘, time.localtime())
with open(u‘D:\\python_project\\yellowPageGeo\\api.txt‘, ‘rb‘) as baiduak:
    akLines = baiduak.readlines()
akLines = [i.strip() for i in akLines]

csvFile=open(u‘D:\\python_project\\yellowPageGeo\\result\\Final_Data_sz_nullResult.csv‘,‘wb‘)
writer=csv.writer(csvFile)

all_lines = []
fsz=open(u‘D:\\python_project\\yellowPageGeo\\Final_Data_sz_null.csv‘,‘rb‘)
readersz=csv.reader(fsz)
for j in readersz:
    all_lines.append(j)

# fbj=open(u‘C:\\Users\\lwx351192\\Desktop\\Final_Data_bj_dedup1.csv‘,‘rb‘)
# readerbj=csv.reader(fbj)
# for k in readerbj:
#     all_lines.append(k)

threads=[]
lock=threading.Lock()
for key in akLines:
    thread = threading.Thread(target=fuc, args=(key,))
    thread.start()
    threads.append(thread)
    time.sleep(1)
for i in threads:i.join()

csvFile.close()
fsz.close()
print ‘程序结束时间:‘+time.strftime(‘%Y%m%d_%H%M%S‘,time.localtime())
# fbj.close()

参考:

http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding

时间: 2025-01-02 12:02:27

获取百度API坐标的相关文章

根据城市名获取百度地图坐标API

最近项目中百度地图的相关操作当没有坐标的时候默认通过城市名称获取中心点,不过感觉有点慢到网上搜索了一下也没类似的城市对应的价格的数据库.所以自己就建了一个.现公开出来供大家使用接口调用方法 http://2.ibtf.sinaapp.com/map/?city=北京返回json串 {"x":"116.403874","y":"39.914889"} 注1.城市名请用UTF-8编码否则会出错2.如返回 please reload

获取百度地图POI数据三(模拟关键词搜索)

上一篇博文中讲到如何获取用于搜索的关键词,并且已经准备好了一百五十万的关键词   这其中有门牌号码,餐馆酒店名称,公司名称,道路名称等.有了这些数据,我们就可以通过代码,模拟我们在百度地图的搜索框中搜索地点,从而获取其返回的POI数据.下面直接上代码~ 一 .准备好用于存储数据的数据库表 由于百度返回的POI数据都是JSON字符串且子节点非常多,为了按照子节点一一存储,就需要建这么一张包含很多字段的表,虽然麻烦,但是信息很全面.当然各位也可以选择性的存储其中的数据. 二.获取并解析数据的代码 c

通过百度API获取城市公交线路坐标点及站点信息

话不多说,先挂最后的数据结果,如果这是你想要的,我们再接着看: 公交线路坐标数据&公交站点坐标数据     正文开始: 前期数据准备:获取城市所有公交线路名称 使用python爬取,结果如下,代码参考:https://www.cnblogs.com/Qiuzhiyu/p/12183140.html 需要准备的js包: <!--用于坐标系转换的js包 详见github:https://github.com/hujiulong/gcoord --> (非必须) <script src

【转】百度API获取城市名地名(附源码)

在做一个软件时,用到了定位功能.网上有很多关于google 的GPS定位,但网上关于google定位都没有用, 搜索下原因:(这里建议大家在中国就尽量不使用系统自带的定位) 因为Google的服务器不在中国(就算能网上关于定位的代码能用,那也非常的慢,除非你的应用是在国外使用)    由于网络等原因所以定位一般会失败 于是转向使用百度api来定位. 所用到的百度API参考地址. 取得位置的百度官方sdk参考 Android定位SDK 由坐标获取地址方法参考 Geocoding API 的 7.逆

百度地图坐标获取器

直接把百度地图坐标获取器放到dom里面有时会 引起js失效:用iframe标签就会涉及到父窗口的操作 代码如下 父窗口 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv=&

百度地图多边形画区域、获取节点经纬度坐标、判断某一点是否在此区域内

创建可绘画map: 1 <!DOCTYPE html> 2 3 <html> 4 <head> 5 <meta charset="UTF-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1, user-scalable=no"> 7 <meta name=&

百度api获取天气

<?php$city="武汉";$content = file_get_contents("http://api.map.baidu.com/telematics/v3/weather?location=$city&output=json&ak=5slgyqGDENN7Sy7pw29IUvrZ");print_r(json_decode($content)); ?> 百度api获取天气,布布扣,bubuko.com

ASP.NET获取百度地图提供的API接口里面的JSON

思路:开始是想直接在前台获取,但是跨域访问还是有点难度,而且格式必须是josnp格式的,最后嫌麻烦,不得已放弃. 我做的ASP.NET  而这个有自带的解析类,直接引用就行了 先在后台获取到JOSN: 1 private void GetQZYZuoBiaoToMap(HttpContext context) 2 { 3 //判断登录是否失效 4 if (context.Session["_user"] == null) 5 { 6 WriteResponse(context, fal

从百度地图API中抠出来的一个js方法,计算百度地图坐标距离

从百度地图api(http://developer.baidu.com/map/jsdemo.htm#a6_1)中抠出来的一个js方法,计算百度地图坐标距离 可读行还没还原,能用就行~ function fD(a, b, c) { for (; a > c;) a -= c - b; for (; a < b;) a += c - b; return a; }; function jD(a, b, c) { b != null && (a = Math.max(a, b));