EDA 프로젝트 시 진행했던 크롤링 내용 정리
- 외부 데이터 로드 방식
1) json (파일 또는 API) : json 패키지를 통해 변환
2) xml (파일 또는 API) : beautifulsoup 모듈을 통해 tag 변환
3) 직접 홈페이지에서 긁어오기 : beautifulsoup 또는 selenium 사용
- 방식별 주요 코드
1) json
import urllib.request ## OpenAPI로 데이터 가져올 때 필요한 통신 관련 모듈 ... http 통신 요청
import json
url = ''
pg = utllib.request.urlopen(url)
cntnt = json.loads(pg.read().decode("utf-8"))
cntnt['movieListResult']['movieList'][0]
2) xml
import urllib.request
from bs4 import BeautifulSoup
url = ''
res = urllib.request.urlopen(url)
soup = BeautifulSoup(res, "html.parser")
soup.find('movie')
soup.find_all('movie')[0]
3) 직접 홈페이지에서 긁어오기
(1) 정적 페이지
import requests
from bs4 import BeautifulSoup
url = '' ### 반복문으로 url 계속 변경해가며 실행
res = requests.get(url)
soup = BeautifulSoup(res.text, "html.parser")
soup.find_all("div")
(2) 동적 페이지
import selenium
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By ## By : 구조 중심으로 찾을 요소 지정
from selenium.webdriver.common.keys import Keys ## 키보드/스크롤 조작
path = r'C:\Users\OOO\Desktop\chromedriver.exe' ## chrome webdriver.exe 저장 위치
s = Service(path)
driver = webdriver.Chrome(service = s) ## 컨트롤 하려는 브라우저 변수화
driver.set_window_size(1000,1000)
url = 'https://naver.com'
driver.get(url)
element = driver.find_element(By.XPATH, '//*[@id="query"]') ## 검색어 입력창 위치 저장
element.send_keys(query_txt) ## 검색창에 입력
driver.find_element(By.XPATH, '//*[@id="search-btn"]').click()
driver.quit()