1. 셀레니움 이란?

  • 셀레늄은 웹 애플리케이션 테스트를 위한 포터블 프레임워크입니다.
  • 셀레늄은 테스트 스크립트 언어를 학습할 필요 없이 기능 테스트를 만들기 위한 플레이백 도구를 제공합니다

 

2. 셀레니움 설치

  • 크롬 브라우저 버전 확인 : chrome://settings/help
  • 크롬 드라이버 다운로드 (크롬 브라우저 버전에 맞춰서 다운) 후 압축 해제 : https://chromedriver.storage.googleapis.com/index.html
  • 설치된 파일 위치 이동 : scraping.py 와 폴더 위치가 같아야 한다. (필수)

chromdriver.exe

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)

 

+ Recent posts