DS스쿨 스터디 노트 - EDA 유가

구너탱·2023년 5월 21일
0

EDA

목록 보기
4/6

유가


Selenium Basic

1. selenium webdriver 사용하기

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome(executable_path='../driver/chromedriver.exe')
driver.get('https://pinkwink.kr')

# 창 닫기
driver.quit()

# 화면 최대 크기 설정
driver.maximize_window()

# 화면 최소 크기 설정
driver.minimize_window()

# 화면 크기 설정
driver.set_window_size(600, 600)

# 새로 고침
driver.refresh()

# 뒤로 가기
driver.back()

# 앞으로 가기
driver.forward()

# 클릭
from selenium.webdriver.common.by import By

first_content = driver.find_element(By.CSS_SELECTOR, '#content > div.cover-masonry > div > ul > li:nth-child(1)')
first_content.click()

# 새로운 탭 생성
driver.execute_script('window.open("http://www.naver.com")')

# 탭 이동
drvier.switch_to.window(driver.window_handles[1])

# 탭 닫기
driver.close()

2. 화면 스크롤

스크롤 가능한 높이(길이)
자바 스크립트 코드 실행

✏️입력

driver.execute_script('return document.body.scrollHeight')

💻출력

5997

화면 스크롤 하단 이동

driver.execute_script('window.scrollTo(0, document.body.scrollHeight);')

현재 보이는 화면 스크린샷 저장

✏️입력

driver.save_screenshot('./last_height.png')

💻출력

True

화면 스크롤 상단 이동

driver.execute_script('window.scrollTo(0, 0);')

특정 태그 지점까지 스크롤

from selenium.webdriver import ActionChains

some_tag = driver.find_element(By.CSS_SELECTOR, '#content > div.cover-list > div > ul > li:nth-child(1)')
action = ActionChains(driver)
action.move_to_element(some_tag).perform()

3. 검색어 입력

  • CSS_SELECTOR
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome('../driver/chromedriver.exe')
driver.get('https://www.naver.com')

검색창 선택 & 검색어 입력

keyword = driver.find_element(By.CSS_SELECTOR, '#query')
keyword.clear()
keyword.send_keys('파이썬')

검색 클릭

search_btn = driver.find_element(By.CSS_SELECTOR, '#search_btn')
search_btn.click()
  • XPATH
    '//': 최상위
    '': 자손 태그
    '/': 자식 태그
    'div[1]': div 중에서 1번째 태그
    //
    [@id="main_pack"]/section[1]/div/div[2]/panel- list/div/ul/li[1]/div/div/a
driver.find_element(By.XPATH, '//*[@id="query"]').send_keys('xpath')

driver.find_element(By.XPATH, '//*[@id="search_btn"]').click()
  • pinkwink에서 검색하기
from selenium import webdriver
from selenium.webdriver.common.by import By

1. 돋보기 버튼을 선택

from selenium.webdriver import ActionChains

search_tag = driver.find_element(By.CSS_SELECTOR, '.search')
action = ActionChains(driver)
action.click(search_tag)
action.perform()

2. 검색어를 입력

driver.find_element(By.CSS_SELECTOR, '#header > div.search > input[type=text]').send_keys(
'딥러닝')

3. 검색 버튼 클릭

driver.find_element(By.CSS_SELECTOR, '#header > div.search.on > button').click()

4. selenium + beautifulsoup

현재 화면의 html 코드 가져오기

from bs4 import BeautifulSoup

req = driver.page_source
soup = BeautifulSoup(req, 'html.parser')

6


2. 셀프 주유소가 정말 저렴하나요? - 데이터 확보하기 위한 작업

3. 셀레니움으로 접근

.find_element() & .find_elements()

  • option 태그 값 추출

반복문으로 value 태그 값 리스트에 담기, .get_attribute()

시도와 같은 방법으로 구 리스트에 담기

엑셀 저장, tqdm 모듈로 진행상황 확인

import time
from tqdm import tqdm_notebook # 그냥 하면 눈에 안 보여서 tqdm 안에 담아서 진행상황 보기

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.CSS_SELECTOR, '#glopopd_excel')
    element_get_excel.click()
    time.sleep(3)  

파일 목록 한 번에 가져오기, glob()

반복문으로 엑셀 파일 여러개 불러오기

.concat()

  • 형식이 동일하고 연달아 붙이기만 할 때

주소 컬럼에서 구 데이터 추출, 구 컬럼 추가

.astype() : 데이터형 변환

인덱스 재정렬 후 기존 인덱스 삭제, .reset_index(inplace=True)

5. 주유 가격 정보 시각화

import matplotlib.pyplot as plt
import seaborn as sns
import platform
from matplotlib import font_manager, rc

plt.rcParams["axes.unicode_minus"] = False
# 마이너스 부호 때문에 한글 깨질 수 있어 주는 설정
rc("font", family="Malgun Gothic")
# %matplotlib inline 이거랑 아래 중에 하나만 하면 됨
get_ipython().run_line_magic("matplotlib", "inline")
# 그래프를 그렸을 때 바로 나타나게 설정

plt.rc('font', family='Malgun Gothic')
plt.rcParams['axes.unicode_minus'] = False

boxplot(pandas)

boxplot(seaborn)

지도 시각화

구 데이터 정리

folium
(코드가 잘 이해가 안 돼서 나중에 다시 보자.. 특히 json 파일)

이 글은 제로베이스 데이터 취업 스쿨의 강의자료 일부를 발췌하여 작성되었습니다.

profile
데이터 꿈나물

0개의 댓글