백앤드·배치App

재해위험지구 웹사이트 크롤링 - 크롬드라이버 사용

아이티프로 2023. 1. 28.
반응형

재해위험지구관련 데이터를 가져오기 위해 만든 크롤링 소스로 크롬드라이버를 사용하였음.

1페이지부터 72페이지를 순환하면서 페이지 셀렉터를 클릭하고 각 지구, 지역, 유형, 날짜드의 값 목록 10개를 셀렉팅해서 리스트에 채우고 판다스 데이터프레임에 담고 최종 csv로 리턴하는 소스임.

크롬드라이버 위치 - D:/chromedriver/chromedriver.exe

import requests
from selenium import webdriver
from time import sleep
import pandas as pd

url = 'https://www.safekorea.go.kr/idsiSFK/neo/sfk/cs/sfc/fcl/riskUserList.html?menuSeq=314'
path = 'D:/chromedriver/chromedriver.exe'
driver = webdriver.Chrome(path)
driver.get(url)
jigu_list = []
jiyuk_list = []
yu_list = []
date_list = []
for i in range(1,72):
    driver.find_elements_by_xpath('//*[@id="bbs_page"]')[0].clear()
    driver.find_elements_by_xpath('//*[@id="bbs_page"]')[0].send_keys(i)
    driver.find_elements_by_xpath('//*[@id="content"]/div[3]/div[4]/div/div/a[3]')[0].click()
    sleep(2)
    for y in range(0,10):
        row = driver.find_elements_by_xpath('//*[@id="apiTr_'+str(y)+'_apiData1"]')[0]
        jigu_list.append(row.find_elements_by_id('apiTr_'+str(y)+'_dstrAreaNm')[0].text)
        jiyuk_list.append(row.find_elements_by_id('apiTr_'+str(y)+'_fullAreaNm')[0].text)
        yuhyung=row.find_elements_by_id('apiTr_'+str(y)+'_typeNm')[0].text.split("(")[0].strip()
        date=
        row.find_elements_by_id('apiTr_'+str(y)+'_typeNm')[0].text.split("(")[1].replace(")","").strip()
        yu_list.append(yuhyung)
        date_list.append(date)
df = pd.DataFrame(list(zip(jigu_list,jiyuk_list,yu_list,date_list)), columns = ['지구명','지역','유형','지정일자'])
df.to_csv("D:/재해위험지구.csv", index=False)
반응형

댓글