반응형
저번 포스팅에서의 Selenium 예제에서는 get함수에 의해 새 창이 실행되고, 크롤링 도중에 그 창을 지우면 크롤링이 진행되지 않는다.
<저번 포스팅>
이번 포스팅에서는 Selenium 사용 시 새 창을 안띄우고 크롤링하는 방법을 소개한다.
저번 포스팅의 코드와 달라진 부분은 4~8번째 줄이다.
chrome_options 객체를 만들어서 driver를 headless 방식으로 세팅하면 된다.
그리고 webdriver.Chrome 생성자의 2번 째 인자로 chrome_option 객체를 넣어주면 driver 설정이 끝난다.
이렇게 다섯줄만 바꿔주면 크롤링 시 새 창을 숨길 수 있게 된다.
실행 결과는 역시 달라지지 않지만 실행속도는 여전히 느리다.
boj3.py 파일을 실행하니까 여러 문장이 뜬 뒤 5초가 넘어서야 결과가 출력되었다.
실행 속도 차이 -> urllib 이용 (약 1.5초) < Selenium+driver(약 5~6초)
Selenium의 속도가 느린 이유는 저번 포스팅에서도 말했듯이 렌더링 때문이다.
from selenium import webdriver
from time import sleep
from bs4 import BeautifulSoup
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('headless')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('lang=ko_KR')
driver = webdriver.Chrome('C:\chromedriver\chromedriver.exe',chrome_options=chrome_options)
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' 카테고리의 다른 글
[크롤링, 예제 3] 게임 포럼 사이트에서 정보 긁어오기 (+그래프) (0) | 2020.10.31 |
---|---|
[크롤링, 예제 2] 레벨 분포 구하기 (0) | 2020.10.26 |
[크롤링, 예제 1-2] 예제 1 - 셀레니움(Selenium) 이용 (0) | 2020.10.23 |
[크롤링, 예제 1] BOJ 정답율 추출하기 (11) | 2020.10.23 |
크롤링을 위한 준비과정 (Python, selenium, beautifulsoup 설치) (2) | 2020.10.22 |
댓글