데이터원본
index
values
aggfunc
columns
fill_value
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
links = soup.find_all('a') for each in links: href = each['href'] text = each.get_text()
- 드라이버실행 : 네이버접속
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과 주유소 가격 정보