'2024/04'에 해당되는 글 2건

728x90

주소가 맞는지 검증하여 결과를 엑셀로 반환 저장하는 코드가 필요해서 사용한 코드이다.

 

# pip install selenium  # Selenium 설치
# pip install openpyxl  # Excel 다루기
# pip install webdriver-manager  # Webdriver Manager for Python is installed
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
 
import time
import pandas as pd
 
# 크롬 드라이버 생성
options = Options()
#options.add_experimental_option("detach", True) # 브라우저 창 떳다기 사라지기(False), 계속 유지(True)
options.add_argument("headless"# 창 숨기는 옵션
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
# driver.maximize_window() # 브라우저 창 최대로 하는 옵션인데 필요없을 거 같다.
 
aaa = []
bbb = []
 
= pd.read_excel(r'Juso_ErrData.xlsx')
= pd.DataFrame(a)
= b['검증주소']
 
= 0
= c.count()
 
# 사이트 접속하기
url = 'https://www.juso.go.kr/support/AddressMainSearch.do?searchKeyword='
 
 
while n < g:
    keyword = str(c[n])
 
    print(keyword)
 
    driver.get(url + keyword)  # url 페이지로 이동
    time.sleep(2)  # 로딩 대기
 
    try:
        roadAddress = driver.find_element(By.XPATH, value='//*[@id="list1"]/div[1]/span[2]').text
        jiAddress = driver.find_element(By.XPATH, value='//*[@id="list1"]/div[2]/span[2]').text
    except:
        pass
        roadAddress = ''
        jiAddress = ''
 
    print(roadAddress)
    aaa.append(roadAddress)
    bbb.append(jiAddress)
    n += 1
b['도로명주소'= aaa
b['지번주소'= bbb
b.to_excel('보정주소.xlsx', index=False)
 

 

 

위 코드 파일과 샘플 엑셀 파일

RoadExcel.py
0.00MB

 

Juso_ErrData.xlsx
0.01MB

 

블로그 이미지

Link2Me

,
728x90

juso.go.kr 사이트에 Python selenium 으로 조회하여 반환받은 결과를 DB에 넣고자 하는데 지번주소 세부주소까지 나오는 데이터가 있다.

 

이를 파싱처리는 코드를 PHP로 구현하고 적어둔다.

주소를 살펴보다 확인 결과 세종로 같은 경우가 빠져있다.

 

<?php
 
ini_set("display_startup_errors"1);
ini_set("display_errors"1);
error_reporting(E_ALL);
 
 
$address = '경기도 평택시 안중읍 안중리 산 69-7번지';
$address = '인천광역시 강화군 화도면 사기리 502-1번지';
$address = '경기도 부천시 소사구 괴안동 105-3 역곡현대아파트2차';
$address = '경기도 부천시 오정구 여월동 329 부천소방서 여월119안전센터';
 
preg_match('/(.+?)동\s/'$address,$out);
if(!empty($out&& strlen($out[0])>0) {
    $jusoDong = preg_replace("/\s{2,}/"," ",$out[0]);
    $str = explode($out[0],$address);
    $vout = explode(" ",$str[1]);
    $jiAddress = $jusoDong.' '.$vout[0];
    $jiAddress = preg_replace("/\s{2,}/"," ",$jiAddress);
    echo $jiAddress.'<br/>';
else {
    preg_match('/(.+?)가\s/'$address,$out);
    if(!empty($out&& strlen($out[0])>0) {
        $jusoDong = preg_replace("/\s{2,}/"," ",$out[0]);
        echo $jusoDong.'<br/>';        
    } else {
        preg_match('/(.+?)[읍,면]\s/'$address,$out);
        if(!empty($out&& strlen($out[0])>0) {
            $str = explode($out[0],$address);
            preg_match('/(.+?)리\s/'$str[1],$vout);
            if(!empty($vout&& strlen($vout[0])>0) {
                $jusoDong = trim($out[0].' '.$vout[0]);
                $jusoDong = preg_replace("/\s{2,}/"," ",$jusoDong);
                echo $jusoDong.'<br/>';
            } else {
                echo $address.'<br/>';
            }
            
        }
    }
 
?>
 

 

 

 

 

블로그 이미지

Link2Me

,