2
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GIS×Python 〜ジオコーディングで位置情報取得〜

Last updated at Posted at 2019-10-22

#1. 経緯
商圏分析するとき目標物や施設の位置情報が欲しかったりする。いちいち手入力して検索するのがちょいとめんどーなので、ジオコーディングを半自動化してみた。
image.png

#2. コード
さくっと1時間程度で書いたコードなんで特に難しいことはやってないし、もっと良い方法があればその都度更新してこ。
アクセスし過ぎると怒られます。
image.png

geocoding.py
# coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import urllib.request
from bs4 import BeautifulSoup
from time import sleep
import numpy as np

driver = webdriver.Chrome(executable_path='./chromedriver')
driver.get("https://www.geocoding.jp/")

out = np.zeros((0,3))
#データフレームとかで検索リストを投げてもよい。
for text in ['カンプ・ノウ','ウェンブリー・スタジアム','スタッド・ドゥ・フランス','サンティアゴ・ベルナベウ','ルジニキ・スタジアム']:
    driver.find_element_by_id('q').send_keys(f"{text}")
    driver.find_element_by_xpath('/html/body/form/div/div[4]/input').click()
    sleep(4)
    next_url = driver.current_url
    html = urllib.request.urlopen(next_url)
    soup = BeautifulSoup(html, "lxml")
    latlon = soup.find("span")
    try:
        latlon_list = [i.string for i in latlon]
        lat = latlon_list[1]
        lon = latlon_list[3]
        out2 = np.hstack((text,lat,lon))
        out = np.vstack((out,out2))
        print(text)
    except:
        out2 = np.hstack((text,"NaN","NaN"))
        out = np.vstack((out,out2))
        print(f'{text}に該当する住所が見つかりませんでした。')

image.png

以上!!!

2
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?