사용하는 라이브러리
from selenium import webdriver
- selenium : 웹 코드를 컨트롤 할 때 사용
- webdriver : 웹브라우저를 제어할 때 사용하는 라이브러리. 웹 사이트에 접속하여 코드를 읽어들임
from bs4 import BeautifulSoup
시작 전 설치할 것
pip install selenium
: 웹 코드를 컨트롤하기 위한 라이브러리chrome driver
: webdriver 사용을 위한 크롬 드라이버 다운로드
크롬 드라이버 활용하기
webdriver.Chrome("크롬 드라이버 위치")
: 크롬 드라이버 실행하기get(url)
: url에 접속한 후 접속된 페이지의 정보를 모두 가지고 옴page_source
: 가지고 온 html 코드 텍스트 형식으로 확인하기BeautifulSoup(html, "html.parser")
: html 형식으로 변환하기
from selenium import webdriver
from bs4 import BeautifulSoup
# 크롬드라이버 실행하기
driver = webdriver.Chrome("C:/ChromeDriver_exe/chromedriver.exe")
# 웹페이지 접속 후 정보 가져오기
url = "www.naver.com"
driver.get(url)
# 가지고 온 HTML 코드 텍스트 형식으로 확인하기
html = driver.page_source
# html 형식으로 변환하기
soup = BeautifulSoup(html, "html.parser")
quit()
: 웹 드라이버 종료하기. 코드만 가져오면 접속을 끊어도 상관 없음
html 정보찾기
- html 태그 안에는 head와 body 영역의 태그로 분류
- head 태그 영역 : html 문서의 기본 정보가 들어가는 영역
- body 태그 영역 : 웹 브라우저에 보여지는 영역
- html 태그(tag)로 정보 찾기
select("태그")
: html 문서 내에서 해당 태그 이름을 가지는 정보 추출. 결과는 리스트 타입
# html 형식으로 변환하기
soup = BeautifulSoup(html, "html.parser")
# "span"이라는 태그를 가지는 정보 추출
soup.select("span")
- html 아이디(id)로 정보 찾기
select("#아이디")
: html 문서 내에서 해당 아이디의 정보 추출
- 샵(#)은 html 문서의 속성 중 id를 의미함
- html 태그 내에서 id 속성의 값은 고유함
- ‘id는 고유한 값으로 유지하자’라는 전세계 html 작성 규범일 뿐, 강제성은 없음
# "fruits1"이라는 아이디를 가지는 정보 추출
soup.select("#fruits1")
- html 클래스(class)로 정보 찾기
select(".클래스")
: html 문서 내에서 해당 클래스의 정보 추출- 점(.)은 html 문서의 속성 중 class를 의미함
- class의 값은 중복을 허용함
# "price"라는 클래스를 가지는 정보 추출
soup.select(".price")
# "span"이라는 태그를 가지고, "price"라는 클래스를 가지는 정보 추출
soup.select("span.price")
- html 자식 태그에 접근하기
- 자식 태그 : 기준이 되는 태그 바로 밑에 있는 태그. '>' 기호를 사용
# 자식 태그 접근하기
# 아이디가 fruits1인 값을 가지는 태그의 자식 중 태그가 span이고 클래스가 name인 태그 접근
soup.select("#fruits1>span.name")
- html 자손 태그에 접근하기
- 자손 태그 : 기준이 되는 태그 밑에 있는 모든 태그. 한칸 띄어쓰기(' ') 기호를 사용
# 자손 태그 접근하기
# 태그가 div이고 클래스가 sale인 태그의 자손 중에 태그가 span이고 클래스가 name인 태그 접근
soup.select("div.sale span.name")
- html 태그 사이 데이터 추출하기
text
: html 태그 사이의 데이터를 텍스트 형식으로 추출tag["key"]
: 태그 내부의 속성 값들 추출. key : value 형태. 조회 결과는 리스트 타입
# html에서 데이터 추출하기
tag = soup.select("span.name")[0]
tag
# >> 결과 : <span class="name"> 바나나 </span>
# 태그와 태그 사이의 데이터 추출하기
tag.text
# >> 결과 : ' 바나나 '
# 태그 내부의 속성의 값들 추출하기
tag["class"]
# >> 결과 : ['name']