1. 셀레니움 이란?
- 셀레늄은 웹 애플리케이션 테스트를 위한 포터블 프레임워크입니다.
- 셀레늄은 테스트 스크립트 언어를 학습할 필요 없이 기능 테스트를 만들기 위한 플레이백 도구를 제공합니다
2. 셀레니움 설치
- 크롬 브라우저 버전 확인 : chrome://settings/help
- 크롬 드라이버 다운로드 (크롬 브라우저 버전에 맞춰서 다운) 후 압축 해제 : https://chromedriver.storage.googleapis.com/index.html
- 설치된 파일 위치 이동 : scraping.py 와 폴더 위치가 같아야 한다. (필수)
3. 사용법
- scraping.py ( 예시: 멜론)
from bs4 import BeautifulSoup
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome('./chromedriver') # 드라이버를 실행합니다.
url = "https://www.melon.com/chart/day/index.htm"
driver.get(url) # 드라이버에 해당 url의 웹페이지를 띄웁니다.
sleep(5) # 페이지가 로딩되는 동안 5초 간 기다립니다.
req = driver.page_source # html 정보를 가져옵니다.
driver.quit() # 정보를 가져왔으므로 드라이버는 꺼줍니다.
soup = BeautifulSoup(req, 'html.parser') # 가져온 정보를 beautifulsoup으로 파싱해줍니다.
songs = soup.select("#frm > div > table > tbody > tr")
print(len(songs))
for song in songs:
title = song.select_one("td > div > div.wrap_song_info > div.rank01 > span > a").text
artist = song.select_one("td > div > div.wrap_song_info > div.rank02 > span > a").text
likes_tag = song.select_one("td > div > button.like > span.cnt")
likes_tag.span.decompose() # span 태그 없애기
likes = likes_tag.text.strip() # 텍스트화한 후 앞뒤로 빈 칸 지우기
print(title, artist, likes)
브라우저 제어 - 스크롤, 버튼 (예제: 네이버 이미지: 검색 아이유)
from bs4 import BeautifulSoup
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome('./chromedriver')
url = "https://search.naver.com/search.naver?where=image&sm=tab_jum&query=%EC%95%84%EC%9D%B4%EC%9C%A0"
driver.get(url)
sleep(3)
driver.execute_script("window.scrollTo(0, 1000)") # 1000픽셀만큼 스크롤 내리기
sleep(1)
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") #보여지는 화면 맨 밑까지 스크롤 내리기
sleep(10)
req = driver.page_source
driver.quit()
soup = BeautifulSoup(req, 'html.parser')
images = soup.select(".tile_item._item ._image._listImage")
print(len(images))
for image in images:
src = image["src"]
print(src)
'프로그래밍 > Python' 카테고리의 다른 글
리스트 자료형 - 리스트 컨프리헨션 (초기화) (0) | 2022.06.05 |
---|---|
회원가입/로그인 (with. python) (0) | 2022.05.03 |
Jinja2 템플릿 언어란? (사용법) (0) | 2022.04.29 |
datetime 함수 (python) - 날짜/시간 (0) | 2022.04.28 |
f-string (python) (0) | 2022.04.28 |