python-クロール地理座標

クロール地理座標#

概要##

宛先URL:バイドゥマップ
使用されているテクノロジーは、実際にはBaidu Mapsが提供する開発者ツールです。暴力はありません。一般的に言って、比較的標準的です。奇妙に感じるのは、インターフェイスを呼び出すと、コンピューターのネットワークが常に切断されていることだけです。内部のファイアウォールによって修正されたようですが、修正されるべきではありません。これは違法な操作ではありません。

処理する##

  1. Baiduアカウントを申請する
    この部分は少しです
  2. Baidu開発者になるために申し込む
    少し
  3. Baiduの秘密鍵を入手する
    開発者コンソールに入り、アプリケーション管理を選択し、アプリケーションを作成し、任意のアプリケーション名を選択し、必要に応じて入力します。ここでサーバータイプを選択します。次のサービスがそれを調べます。最も重要なのは、ジオコーディングと逆ジオコーディングです。

次のステップは、検証方法を選択することです。最初に、IPホワイトリストを選択しました。次に、IPを変更した場合、それが機能しないかどうかを考えました。そのため、sn検証方式を採用しています。

このステップで覚えておく必要があるのは、開発者のakとskです。この秘密鍵をコード部分から削除しました
4. リクエストする

リクエストはこのURLを中心に展開します
クローラーを変更する必要がある次のステップは

http://api.map.baidu.com/geocoding/v3/?address=No。10、Shangdi Tenth Street、Haidian District、Beijing&output = json&ak = Your ak&callback = showLocation // GETリクエスト

注:現在のインターフェースドキュメントはV3.0であり、V2.0以前のバージョンの新規ユーザーは2019.6.18以降使用できません。古いユーザーは引き続きV2.0以前のバージョンを使用して、リバースジオコーディングサービスをリクエストできます。ユーザーエクスペリエンスを確保するために、できるだけ早くV3.0に移行することをお勧めします。

コードセクション##

# - *- coding: utf-8-*-import urllib.request, urllib.parse, urllib.error
import json
import hashlib
import csv

# 出力形式はjsonです
output ='json'
# 開発者プラットフォームによって取得されたAk
ak ='*****************'
# 開発者プラットフォームによって取得されたSk
sk='******************'
# ターゲットの位置,こちらは外部からインポートできます
a=['北京','キャピタル医科大学','天国の神殿病院','Tiantongyuan','テキサス','杭州','上海','北京大学','天津']
# 保存場所を開く
csv_obj =open('./python/地理的座標をクロールする/data.csv','w',newline='', encoding="utf-8")
# タイトルを書く
csv.writer(csv_obj).writerow(["ポジション","lng","lat"])
# クロール
for i in a:
 queryStr ='/geocoding/v3/?address={}&output=json&ak={}'.format(i,ak)
 # トランスコード、安全はトランスコードされていない部分です
 encodedStr = urllib.parse.quote(queryStr, safe="/:=&?#+!$,;'@()*[]")
 # skを追加
 rawStr = encodedStr + sk
 # Baiduインターフェースの呼び出しに使用されるsn値を計算します
 # こちらの公式文書を参照してください
 sn =(hashlib.md5(urllib.parse.quote_plus(rawStr).encode("utf8")).hexdigest())
 # スプライシングURL
 url = urllib.parse.quote("http://api.map.baidu.com"+ queryStr +"&sn="+ sn, safe="/:=&?#+!$,;'@()*[]")
 # ターゲットリクエスト
 req = urllib.request.urlopen(url)
 # デコード
 res = req.read().decode()
 # jsonから辞書へ
 temp = json.loads(res)
 # 経度と緯度を抽出する
 lng,lat=temp['result']['location']['lng'],temp['result']['location']['lat']
 # csvファイルに書き込む
 csv.writer(csv_obj).writerow([i,lng,lat])
# csvファイルを閉じる
csv_obj.close()

結果##

小規模な運用でも問題なく、その後の大規模なサンプルの計算を行います。
**Baidu Dad **はとても素敵です。そうでなければ、あなたは一つずつ失う必要があります

結びの言葉##

更新に関しては、現在、毎日の更新はできません。自由に更新することしかできません。

love&peace

Recommended Posts

python-クロール地理座標
pythonクローラーは何をクロールできますか
PYTHONを使用してニュース記事をクロールする方法
Python-ステーションのすべての写真をクロール