반응형
예제1은 Selenium과 Drive 대신 urllib 라이브러리와 Beautifulsoup 모듈으로 크롤링을 했다.
Selenium과 Drive는 필수 사항이 아닐 뿐이지 충분히 이용할 수 있다. 이 포스팅에서는 예제1의 보충수업(?)으로 Beautifulsoup에 Selenium과 Drive를 추가로 이용하여 크롤링을 해볼 것이다.
이 포스팅에서는 아래 예제1 포스팅을 기반으로 설명할 것이다.
코딩 및 실행 결과
여러분들이 chromedriver을 설치한 경로를 webdriver.Chrome 생성자 에 넣어 driver 객체를 생성한다.
driver 개체 내부의 get 함수로 해당 웹사이트를 가져오고 페이지 소스를 담아오면 된다.
주의할점이 있다면 크롤링이 끝나기 전에, get함수에 의해 실행된 웹사이트를 닫으면 안된다.
가만히 기다리면 이전 포스팅과 같은 실행 결과가 나오게 된다.
urllib 라이브러리 방식보다는 실행 속도가 훨씬 느린 것을 느끼게 될 것이다.
Selenium은 계속 렌더링을 해주기 때문에 동적 크롤링에 적합한 것이며, 그만큼 속도도 느린 편인 것이다.
from selenium import webdriver
from time import sleep
from bs4 import BeautifulSoup
driver = webdriver.Chrome('C:\chromedriver\chromedriver.exe')
driver.get('https://www.acmicpc.net/problemset/1')
html = driver.page_source
#여기서 부터는 이전 포스팅과 동일
soup = BeautifulSoup(html,'html.parser')
ratetexts = soup.select('tbody tr td:nth-child(6)')
sum=0
for text in ratetexts:
print(text.text[0:-1])
sum+=float(text.text[0:-1])
length = len(ratetexts)
ACP = round(sum/(len(ratetexts)),3)
print('Size='+str(length))
print('Average Correct Percentage='+str(ACP)+'%')
반응형
'Crawling' 카테고리의 다른 글
[크롤링, 예제 2] 레벨 분포 구하기 (0) | 2020.10.26 |
---|---|
[크롤링, 예제 1-3] Selenium - 새 창 안띄우고 크롤링 하기 (0) | 2020.10.23 |
[크롤링, 예제 1] BOJ 정답율 추출하기 (11) | 2020.10.23 |
크롤링을 위한 준비과정 (Python, selenium, beautifulsoup 설치) (2) | 2020.10.22 |
크롤링의 정의와 이점 그리고 주의할 점 (0) | 2020.10.22 |
댓글