[ZB 데이터스쿨 11기] 5주차 학습노트

InSung-Na·2023년 2월 6일
0

Study Note

목록 보기
5/18
post-thumbnail

📌5주차 학습내용 요약

Pandas Pivot Table

  • 속성 : index, columns, values, aggfunc, margins, fill_value
  • 속성에 복수의 내용 지정시 ['A', 'B'] 사용
  • pd.pivot_table(df, ...) = df.pivot_table(...)

데이터원본

index

values

aggfunc

columns

fill_value

GoogleMaps

  • 구글지도 검색을 통해서 대상의 지리정보를 습득할 수 있다
  • Google API Key를 통해 사용한다

seaborn

  • matplotlib을 기반으로 다양한 색상 테마와 통계용 차트 등의 기능을 추가한 시각화패키지
  • 주로 boxplot, swarmplot, lmplot, heatmap, pairplot 등을 사용한다

Folium

  • 파이썬의 대표적인 지도시각화 라이브러리

    지도에 마커 찍기

    구역별 시각화

BeautifulSoup

  • 웹페이지같은 HTML문서를 분석하는데 사용하는 파이썬 라이브러리
    from bs4 import BeautifulSoup
    page = open("../data/03. test_first.html", "r").read()
    soup = BeautifulSoup(page, "html.parser")
    print(soup.prettify())

태그조회

## 단일
soup.find("p")
## 다수
soup.find_all("p")

클래스조회

soup.find("p", class_="inner-text second-item")

아이디조회

soup.find(id='second')

텍스트조회

soup.find(id='second').text

a 태그에서 href 속성값 추출

links = soup.find_all('a')
for each in links:
    href = each['href']
    text = each.get_text()

크롬개발자도구

  • 개발을 도와주는 다양한 도구
  • 해당 페이지의 문서정보를 보여준다

Selenium

  • 웹 브라우저를 원격 조작하는 도구
  • 자동으로 URL을 열고 클릭 등의 매크로 동작구현
  • 스크롤, 문자의 입력, 화면 캡처 등등

📌기능요약

  • 드라이버실행 : 네이버접속
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
#
# 크롬드라이버 실행 및 사이트 접속
print('크롬드라이버 실행 및 사이트 접속')
driver = webdriver.Chrome()
driver.get('https://www.naver.com')
  • 화면조절
## 최대화
print('최대화')
driver.maximize_window()
time.sleep(2)
#
## 최소화
print('최소화')
driver.minimize_window()
time.sleep(2)
#
## 화면 크기 지정
print('화면 크기 지정')
driver.set_window_size(1024, 600)
time.sleep(2)
  • 스크롤 동작
## 스크롤 가능한 높이 가져오기
last_height = driver.execute_script("return document.body.scrollHeight")
print('스크롤 길이 : {}'.format(last_height))
#
## 아래로이동
print('아래로이동')
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(2)
#
## 위로이동
print('위로이동')
driver.execute_script("window.scrollTo(0, 0);")
time.sleep(2)
#
## 특정대상(공지사항)까지 스크롤
print('특정대상(공지사항)까지 스크롤')
some_tag = driver.find_element(By.XPATH, '//*[@id="footer"]/div/div[2]/div/h3/a')
action = ActionChains(driver)
action.move_to_element(some_tag).perform()
time.sleep(2)
#
## 스크린샷
print('스크린샷')
driver.save_screenshot('./target_height.png')
time.sleep(2)
  • 페이지 조작
## 글자 입력
print('글자 입력')
some_tag = driver.find_element(By.ID, 'query')
some_tag.send_keys('데이터사이언스' + Keys.ENTER)
# some_tag.send_keys('데이터사이언스\n')
time.sleep(2)
#
## 버튼 클릭
print('버튼 클릭')
some_tag = driver.find_element(By.CSS_SELECTOR, '#nx_query')
some_tag.clear()    # 검색창 초기화
some_tag.send_keys('웹크롤링')
button = driver.find_element(By.CSS_SELECTOR, '#nx_search_form > fieldset > button > i')
button.click()
time.sleep(2)
#
## 새로고침
print('새로 고침')
driver.refresh()
time.sleep(2)
#
## 뒤로가기
print('뒤로가기')
driver.back()
time.sleep(2)
#
## 앞으로가기
print('앞으로가기')
driver.forward()
time.sleep(2)
  • 탭 조작
## 새로운 탭 생성
print('새로운 탭 생성')
driver.execute_script('window.open("https://www.naver.com")')
time.sleep(2)
#
## 탭 이동
print('탭 이동')
driver.switch_to.window(driver.window_handles[0]) # 원하는 탭의 idx 입력
time.sleep(2)
#
## 탭 닫기
print('탭 닫기')
driver.close()  # 탭이 한개인 경우 종료
time.sleep(2)
#
# driver 종료
print('driver 종료')
time.sleep(2)
driver.quit()


📌학습범위

  • Part 04. EDA&Web Crawling Project
    • 서울시범죄분석
    • Web Data 크롤링과 시카고맛집분석
    • 네이버영화평점
    • Selenium과 주유소 가격 정보

0개의 댓글