관리 메뉴

RUBY

[WebData][Oil] 4. 데이터 접근하기 본문

데이터 분석/EDA_웹크롤링_파이썬프로그래밍

[WebData][Oil] 4. 데이터 접근하기

ruby-jieun 2023. 2. 6. 02:49

 

 

 

웹 데이터 수집하고 정리하기
Oil Price Analysis and Green construction
4. 데이터 접근하기

 


 

 

 

1. selenium 설치이~

!pip install selenium

 

 

2. 페이지 접근하기

from selenium import webdriver

url = "https://www.opinet.co.kr/searRgSelect.do"
driver = webdriver.Chrome("../driver/chromedriver") 
driver.get(url)

 

 

3. 지역: 시/도

sido_list_raw = driver.find_element_by_id("SIDO_NM0")
sido_list_raw.text

 

 

4. 서울특별시!

sido_list[1].get_attribute("value")

 

 

5. sido_list_raw 변수에 리스트 결과값을 저장한 sido_names

 - sido_names의 값을 send_key를 이용해서 보내면 된다.

 - 1은 서울, 2는 부산, 3은 대구...

sido_names = [] 

for option in sido_list:
    sido_names.append(option.get_attribute("value"))
sido_names

 

 

6. 서울로 고정하자

sido_names[1]

sido_list_raw.send_keys(sido_names[1])

 

 

 

7. option에서 list안의 변수값들을 저장하자

gu_list_raw = driver.find_element_by_id("SIGUNGU_NM0") # 부모 태그 
gu_list = gu_list_raw.find_elements_by_tag_name("option") # 자식 태그 

gu_names = [option.get_attribute("value") for option in gu_list]
gu_names = gu_names[1:]
gu_names[:5], len(gu_names)

 

 

8. send_keys(gu_names[num])로 해당 값을 변경해보자

 0 : 강남구, 1 : 강동구...

gu_list_raw.send_keys(gu_names[15])

 

 

9. 반복문으로 모든 구의 데이터를 엑셀파일로 저장한다.

driver.find_element_by_css_selector("#glopopd_excel").click()

 

 

10. 뭐.. 최신 버전에서는 저렇게 쓰라고 하는데... 그냥 일단은 참고해두자

import time 
from tqdm import tqdm_notebook

for gu in tqdm_notebook(gu_names):
    element = driver.find_element_by_id("SIGUNGU_NM0")
    element.send_keys(gu)
    time.sleep(3)
    
    element_get_excel = driver.find_element_by_id("glopopd_excel").click()
    time.sleep(3)
Comments