본문 바로가기

Python/크롤링(Crawling)

파이썬(2)-Selenium, 동적사이트 크롤링

*이 글을 읽기전에 작성자 개인의견이 있으니, 다른 블로그와 교차로 읽는것을 권장합니다.*

1. Selenium

셀레니움은 브라우저를 컨트롤할 수 있도록 지원하는 라이브러리입니다.

정적사이트일 경우, BeautifulSoup로 requests하여 크롤링할 수 있지만, 동적사이트일 경우에는 사이트 접근이 막힙니다. 따라서, 동적사이트일 경우 Selenium을 사용하여 사이트에 접근합니다.

!pip install selenium
!pip install chromedriver_autoinstaller
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup
driver = webdriver.Chrome()

driver.get('http://www.google.com')
# 검색창 - 검색 - name q 확인

search = driver.find_element('name', 'q')
search.send_keys('날씨')  # 키보드의 이벤트

search.send_keys(Keys.RETURN)

# 정리
driver = webdriver.Chrome()
driver.get('http://www.google.com')
search = driver.find_element('name', 'q')
search.send_keys('미세먼지')  # 키보드의 이벤트
search.send_keys(Keys.RETURN)

2. 네이버웹툰 크롤링

https://comic.naver.com/webtoon/detail?titleId=769209&no=122&week=wed 사이트 크롤링하기

driver = webdriver.Chrome()
driver.get('https://comic.naver.com/webtoon/detail?titleId=769209&no=122&week=wed')
# driver.page_source -> html

soup = BeautifulSoup(driver.page_source)
comment_area = soup.findAll('span', {'class':'u_cbox_contents'})
print('** 베스트 댓글 **')
for i in range(len(comment_area)):
    comment = comment_area[i].text.strip()
    print(comment)
    print('-' * 30)

Xpath: 기존의 컴퓨터 파일 시스템에서 사용하는 경로 표현식과 유사한 경로 언어

driver.find_element('xpath', '/html/body/div[1]/div[5]/div/div/div[5]/div[1]/div[3]/div/div/div[4]/div[1]/div/ul/li[2]/a/span[2]').click()

 

soup = BeautifulSoup(driver.page_source)
comment_area = soup.findAll('span', {'class':'u_cbox_contents'})
print('****** 전체 댓글 ******')
for i in range(len(comment_area)):
    comment = comment_area[i].text.strip()
    print(comment)
    print('-' * 30)