'파이썬#도로명주소#셀레니움#예외처리' 태그의 글 목록 :: 테크니션
반응형

우리나라 주소는 법정동과 행정동명 차이로 

주소에 나와있는 동과 동사무소가 다른 경우가 있다

이 경우에는

https://www.juso.go.kr/openIndexPage.do

여기에 들어가서 찾을 수 있다

답십리 래미안 관련 업무는 답십리1동에서 보는 것을 알 수 있다

매월동은 서창동으로 가야된다

주소 하나면 바로 검색을 하면 되는데

여러개를 일일히 치는 것 보다

파이썬에서 엑셀을 읽어서 검색 후 해당 관할동사무소를 다시 엑셀에 저장하는 코드로 

돌리는게 더 편할 것 같다

import time
from selenium import webdriver
import pandas as pd
from selenium.webdriver.common.by import By
import openpyxl


file_path = r'C:\Users\Administrator\Downloads\all_personn.xlsx'
sheet_name = 'Sheet1'

df = pd.read_excel(file_path, sheet_name=sheet_name)

data_list_juso = df["지번주소"].tolist()
driver= webdriver.Chrome()
dongsamuso=[]
for i in range(0,len(data_list_juso)):
    url = "https://www.juso.go.kr/support/AddressMainSearch.do?searchKeyword=&dsgubuntext=&dscity1text=&dscounty1text=&dsemd1text=&dsri1text=&dssan1text=&dsrd_nm1text=&aotYn=N"
    driver.get(url)
    time.sleep(0.1)
    driver.maximize_window()
    time.sleep(0.22)
    ddd = ' '.join(data_list_juso[i].split()[:3])
    #ddd = data_list_juso[i]
    # input_xpath = r'/html/body/div[4]/main/div/section[1]/div[1]/form/fieldset/div/div[1]/input[1]'
    input_xpath = r'/html/body/div[2]/div/main/div[1]/form/fieldset/div[1]/div[1]/div/input[1]'
    input_element = driver.find_element(By.XPATH, input_xpath)
    input_element.send_keys(ddd)
    time.sleep(0.2)
    button_xpath = r'/html/body/div[2]/div/main/div[1]/form/fieldset/div[1]/button'
    button_element = driver.find_element(By.XPATH, button_xpath)
    button_element.click()

    time.sleep(2)

    nbutton_xpath = r'#list1 > div.addrWrap > div.addAddr > a'
    nbutton_element = driver.find_element(By.CSS_SELECTOR, nbutton_xpath)
    nbutton_element.click()
    paegi = r'#list1'
    meeee = driver.find_element(By.CSS_SELECTOR, paegi).text.split('\n')
    k = list(meeee[1])[-1]
    if k == '지':
        anbutton_xpath = r' # list2 > div.addrWrap > div.addAddr > a'
        anbutton_element = driver.find_element(By.CSS_SELECTOR, nbutton_xpath)
        anbutton_element.click()

        text_xpath = r'#engAddr_2 > ul > li:nth-child(3) > span:nth-child(2)'
        text_element = driver.find_element(By.CSS_SELECTOR, text_xpath)
        text_value = text_element.text
        words = text_value.split()
        second_last_word = str(words[:-1])

    else:
        text_xpath = r'#engAddr_1 > ul > li:nth-child(3) > span:nth-child(2)'
        text_element = driver.find_element(By.CSS_SELECTOR, text_xpath)
        text_value = text_element.text

    words = text_value.split()
    second_last_word = str(words[:-1])
    dongsamuso.append(second_last_word)
    workbook = openpyxl.load_workbook(file_path)
    sheet_name = 'Sheet1'
    sheet = workbook[sheet_name]
    sheee_name = 'H'+str(i+2)
    sheet[sheee_name] = second_last_word
    workbook.save(file_path)

가끔 폐지라고 나오는 경우가 있는데 이에 대한 예외처리까지 담았다

반응형

+ Recent posts