最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python調(diào)用百度地圖WEB服務API獲取地點對應坐標值

 更新時間:2019年01月16日 16:34:36   作者:我是醬油誰要打我  
這篇文章主要為大家詳細介紹了python調(diào)用百度地圖WEB服務API獲取地點對應坐標值,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本篇博客介紹如何使用Python調(diào)用百度地圖WEB服務API獲取地點對應坐標值,現(xiàn)有一系列結(jié)構(gòu)化地址數(shù)據(jù)(如:北京市海淀區(qū)上地十街十號),目的是獲取對應坐標值。

百度地圖開發(fā)者平臺路線規(guī)劃使用說明網(wǎng)址

最終結(jié)果是寫入了txt文件,所以需要在循環(huán)遇到錯誤的時候?qū)懭雽目勺R別的值(看到這個值就知道這個結(jié)果是錯誤的,可以寫對應數(shù)量的NA或者0值),方便后續(xù)分析。

# -*- coding: utf-8 -*-
"""
Created on Fri Aug 15 10:06:16 2018
@author: zjp
Python3.6.6
"""
 
# 加載必要的包
 
import csv
import json
import time
import requests
from bs4 import BeautifulSoup
 
origin_path = 'E://GetRoute/HuaNan/中文地址.csv' # 原始數(shù)據(jù)文件路徑
new_path = 'E://GetRoute/HuaNan/地址對應坐標.txt'  # 爬取數(shù)據(jù)文件保存路徑
 
 
url_geocode = r'http://api.map.baidu.com/geocoder/v2/?' # 百度地圖api網(wǎng)址
AK = ['oFCSeioUzdN5NfzSlBBXqBEfXgp26mGM', 'Akqk5xjbSGzy1WC1IUF04K2CQWGtOFNv', 'HCdq1Ry35rwgVQwjAXqAEQGzWNY7pi1h',
  'GtOZERwlG0PynPwFrBYaF9wWcAGxvaw8', 'iRKkZehZimIWdGoxfjlbtLrYb0VVgVaD', 'gG0KIBhAGpAVvaRUlwFjmOtsTKGRK2tf',
  'CSsyosiklqyYUDNnBP0BR63fa9BzCHFf', 'mq4TZshHveVqML3icCC6AWnS25rbjYBz', 'rBYetA6WQNOlXtQWInz8ckRE0iCDsUjB',
  'QUshHD8KUAk8y9gLwDhQ6RyOgQxEB8VD', '7Ict6oZmpAYYXMjha2Tk5g4ENTCYwx03'] # 開發(fā)者應用密鑰
cod = r'&ret_coordtype=bd09ll' # 坐標類型(設置為百度坐標)
machine_data = csv.reader(open(origin_path, 'r', encoding='utf-8')) # 讀取原始文件數(shù)據(jù)
n = 0
akn = 0
column_names = '設備序列號 取點方式1 準確度1 網(wǎng)點緯度 網(wǎng)點經(jīng)度 網(wǎng)點名稱 取點方式2 準確度2 安裝地址緯度 安裝地址經(jīng)度 安裝地址 取點 準確度 最佳緯度 最佳經(jīng)度 安裝方式 最佳地址'
with open(new_path, 'a', encoding='utf-8') as f: # 把變量名寫入新文件
 f.write(column_names)
 f.write('\n')
 f.close()
while True:
 try:
  for addr in machine_data: # 循環(huán)爬取每一條數(shù)據(jù)
   province = str(addr[0]) # 省份
   city = str(addr[1]) # 城市
   mac = str(addr[2])  # 設備序列號
   wd = str(addr[3])  # 網(wǎng)點名稱
   anz = str(addr[4])  # 安裝地址
   anz_type = str(addr[5]) # 安裝類型
   add1 = province + city + wd
   add2 = province + city + anz
   if akn < len(AK): # AK配額還沒用完時
    n += 1
    aknd = AK[akn] # 第akn個秘鑰是aknd
    ak = r'&output=json&ak=' + aknd
    address1 = r'address=' + add1
    tar_url = url_geocode + address1 + ak + cod # 最終url網(wǎng)址
    response = requests.get(url=tar_url) # 請求網(wǎng)址響應
    soup = BeautifulSoup(response.content, 'html.parser') # 解析網(wǎng)頁內(nèi)容
    response.close() # 獲取內(nèi)容后關閉網(wǎng)頁(防止被遠程主機認定為攻擊行為)
    dictinfo = json.loads(str(soup)) # json數(shù)據(jù)轉(zhuǎn)dict數(shù)據(jù)
    status = dictinfo['status']
    print(status)
    if status == 0: # status狀態(tài)碼為0表示服務器響應成功,本次循環(huán)爬取數(shù)據(jù)成功
     lng1 = round(dictinfo['result']['location']['lng'], 8) # 經(jīng)度保留8位數(shù)
     lat1 = round(dictinfo['result']['location']['lat'], 8) # 緯度保留8位數(shù)
     precise1 = dictinfo['result']['precise'] # 1為精準打點,可靠性高;0為模糊打點,準確性低
     confidence1 = dictinfo['result']['confidence'] # 可信度,描述打點準確度,大于80表示誤差小于100m
     geocode1 = str(precise1) + ' ' + str(confidence1) + ' ' + str(lat1) + ' ' + str(lng1) + ' ' + add1
    elif status == 302 or status == 210: # 302 配額超限,限制訪問;210 IP驗證未通過,則使用下一個Ak
     akn += 1
     lat1 = 'break'
     lng1 = 'break'
     precise1 = 0
     confidence1 = 0
     geocode1 = '0 0 break break ' + add1
    else:
     lat1 = 'na'
     lng1 = 'na'
     precise1 = 0
     confidence1 = 0
     geocode1 = '0 0 na na ' + add1
    address2 = r'address=' + add2
    tar_url2 = url_geocode + address2 + ak + cod # 總的url
    response2 = requests.get(url=tar_url2) # 請求網(wǎng)址響應
    soup2 = BeautifulSoup(response2.content, 'html.parser') # 解析內(nèi)容
    response2.close() # 獲取內(nèi)容后關閉網(wǎng)頁(防止被遠程主機認定為攻擊行為)
    dictinfo2 = json.loads(str(soup2)) # json轉(zhuǎn)dict
    status2 = dictinfo2['status']
    print(status2)
    if status2 == 0:
     lng2 = round(dictinfo2['result']['location']['lng'], 8) # 經(jīng)度保留8位數(shù)
     lat2 = round(dictinfo2['result']['location']['lat'], 8) # 緯度保留8位數(shù)
     precise2 = dictinfo2['result']['precise'] # 1為精準打點,可靠性高;0為模糊打點,準確性低
     confidence2 = dictinfo2['result']['confidence'] # 可信度,描述打點準確度,大于80表示誤差小于100m
     geocode2 = str(precise2) + ' ' + str(confidence2) + ' ' + str(lat2) + ' ' + str(lng2) + ' ' + add2
    elif status2 == 302 or status2 == 210: # 配額超限,限制訪問;IP驗證未通過
     akn += 1
     precise2 = 0
     confidence2 = 0
     lat2 = 'break'
     lng2 = 'break'
     geocode2 = '0 0 break break ' + add2
    else:
     lat2 = 'na'
     lng2 = 'na'
     precise2 = 0
     confidence2 = 0
     geocode2 = '0 0 na na ' + add2
    if anz_type == '在行':
     if precise1 == 1:
      geocode3 = str(precise1) + ' ' + str(confidence1) + ' ' + str(lat1) + ' ' + str(lng1) + ' ' + anz_type + ' 網(wǎng)點'
     elif precise1 == 0 and precise2 == 0:
      geocode3 = str(precise1) + ' ' + str(confidence1) + ' ' + str(lat1) + ' ' + str(lng1) + ' ' + anz_type + ' 網(wǎng)點'
     else:
      geocode3 = str(precise2) + ' ' + str(confidence2) + ' ' + str(lat2) + ' ' + str(lng2) + ' ' + anz_type + ' 安裝地址'
    else:
     geocode3 = str(precise2) + ' ' + str(confidence2) + ' ' + str(lat2) + ' ' + str(lng2) + ' ' + anz_type + ' 安裝地址'
    geocode = mac + ' ' + geocode1 + ' ' + geocode2 + ' ' + geocode3
    with open(new_path, 'a', encoding='utf-8') as f:
     f.write(geocode)
     f.write('\n')
     f.close()
    print('good' + str(n))
   else:
    print('配額不足!')
    break # 配額不足中斷整個循環(huán)
  print('已完成')
 except: # 發(fā)生錯誤時執(zhí)行以下代碼塊
  print('未知錯誤')
  time.sleep(5)
  with open(new_path, 'a', encoding='utf-8') as f:
   f.write('未知錯誤')
   f.write('\n')
   f.close()
  continue # 發(fā)生未知錯誤跳過該次循環(huán)
 print('程序已停止')
 break

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • python打印帶時間的日志實現(xiàn)代碼

    python打印帶時間的日志實現(xiàn)代碼

    python的logging模塊提供了標準的日志接口,可以通過它存儲各種格式的日志,下面這篇文章主要給大家介紹了關于python打印帶時間的日志的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-04-04
  • python之如何進行去重問題

    python之如何進行去重問題

    這篇文章主要介紹了python之如何進行去重問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • python Celery定時任務的示例

    python Celery定時任務的示例

    這篇文章主要介紹了python Celery定時任務的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • 如何基于OpenCV&Python實現(xiàn)霍夫變換圓形檢測

    如何基于OpenCV&Python實現(xiàn)霍夫變換圓形檢測

    最近開始學習opencv,想檢測圖片上的圓環(huán),發(fā)現(xiàn)霍夫變換可以做這樣的效果出來,于是嘗試用霍夫變換做了下圓環(huán)檢測,這篇文章主要給大家介紹了基于OpenCV&Python實現(xiàn)霍夫變換圓形檢測的相關資料,需要的朋友可以參考下
    2021-08-08
  • Python用5行代碼實現(xiàn)批量摳圖的示例代碼

    Python用5行代碼實現(xiàn)批量摳圖的示例代碼

    這篇文章主要介紹了Python用5行代碼實現(xiàn)批量摳圖的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • Python進階篇之正則表達式常用語法總結(jié)

    Python進階篇之正則表達式常用語法總結(jié)

    正則表達式是一個特殊的字符序列,它能幫助你方便的檢查一個字符串是否與某種模式匹配。本文為大家總結(jié)了一些正則表達式常用語法,希望有所幫助
    2022-08-08
  • Python實現(xiàn)的IP端口掃描工具類示例

    Python實現(xiàn)的IP端口掃描工具類示例

    這篇文章主要介紹了Python實現(xiàn)的IP端口掃描工具類,結(jié)合實例形式分析了Python基于socket模塊與多線程操作實現(xiàn)IP端口掃描的相關操作技巧,需要的朋友可以參考下
    2019-02-02
  • pip命令無法使用的解決方法

    pip命令無法使用的解決方法

    今天小編就為大家分享一篇pip命令無法使用的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • 使用Python打造高效多進程TCP服務器

    使用Python打造高效多進程TCP服務器

    這篇文章主要為大家詳細介紹了如何使用Python實現(xiàn)多進程的TCP服務器,通過為每個連接進來的客戶端分配一個進程,實現(xiàn)并發(fā)處理多個客戶端請求的能力,感興趣的可以了解下
    2024-01-01
  • 詳解Pandas中GroupBy對象的使用

    詳解Pandas中GroupBy對象的使用

    本文將探討如何在Python的Pandas庫中創(chuàng)建GroupBy對象以及該對象的工作原理。我們將詳細了解分組過程的每個步驟,以及我們可以從中提取哪些有用信息,需要的可以參考一下
    2022-06-06

最新評論

济阳县| 武功县| 虹口区| 晴隆县| 府谷县| 武威市| 得荣县| 蓬莱市| 中超| 独山县| 乐平市| 施甸县| 金乡县| 济阳县| 余干县| 廉江市| 札达县| 息烽县| 湘西| 宁城县| 枞阳县| 民权县| 虎林市| 响水县| 洮南市| 芜湖市| 长子县| 巨鹿县| 宾川县| 婺源县| 凤城市| 水城县| 邳州市| 富民县| 诸城市| 洞头县| 凤翔县| 桐柏县| 镇安县| 敦化市| 中江县|