Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 웹크롤링
- 머신러닝
- Python
- 웹스크래핑
- 협업 필터링
- 데이터
- 프로그래머스
- pytorch
- 코딩테스트
- codingtest
- 시각화
- SGD
- 데이터 엔지니어링
- 부스트캠프
- Tensor
- 코테
- Cosine-similarity
- selenium
- 추천 시스템
- Overfitting
- 파이썬
- TF-IDF
- wordcloud
- 백준
- recommendation system
- 딥러닝
- 알고리즘
- coursera
- 추천시스템
- 분산 시스템
Archives
- Today
- Total
개발자식
[크롤링] 무한 스크롤 웹 스크래핑(Selenium) 본문
인스타그램, 트위터와 같이 무한으로 스크롤을 내릴 수 있는 사이트가 있다.
이는 BeautifulSoup으로 한 번에 가져오지 못하므로,
Selenium을 이용해야 한다.
이 예제는 돌아가지 않고, 코드 분석 용이다.
from webdriver_manager.chrome import ChromeDriverManager # 자동으로 크롬드라이버(가상브라우저) 파일을 다운로드해주는 라이브러리
from selenium.webdriver.chrome.service import Service # 다운로드된 크롬드라이버 파일을 연결하기 위해 활용
from selenium import webdriver
from bs4 import BeautifulSoup
import pandas as pd
import time
import datetime
from dateutil import rrule
import warnings
warnings.filterwarnings("ignore")
service = Service(executable_path=ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)
driver.get(url)
time.sleep(3)
# 아래 코드가 특정 웹페이지에서 Selenium을 활용해 스크롤 다운하는 코드입니다.
# 가장 아래까지 스크롤 다운 후 매번 3초씩 로딩을 기다린 후 스크롤 다운을 마지막까지 진행합니다.
while True:
lastHeight = driver.execute_script("return document.body.scrollHeight")
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(3)
newHeight = driver.execute_script("return document.body.scrollHeight")
if newHeight == lastHeight:
break
web = driver.page_source
source = BeautifulSoup(web, 'html.parser')
- lastHeight = driver.execute_script("return document.body.scrollHeight") : 마지막 시점의 창 높이를 저장한다.
- driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") : 현재 창 길이만큼 스크롤한다.
- time.sleep(3) : 스크롤 후 창이 로딩되기 위해 3초를 기다린다.
- newHeight = driver.execute_script("return document.body.scrollHeight") : 스크롤이 된 후의 창 높이를 새로운 높이로 저장한다.
- 새로운 높이가 이전 높이와 같으면 스크롤 종료, 아니면 다시 스크롤 반복한다.
이러한 무한 반복 같은 경우는 범위를 지정해주는 것이 좋다.
'Data > Python' 카테고리의 다른 글
[크롤링] 웹 크롤링_Open API 활용 (0) | 2022.03.31 |
---|---|
[크롤링] 웹 크롤링, 네이버 금융TOP (0) | 2022.03.30 |
[크롤링] Post request 기반의 웹사이트 크롤링 (0) | 2022.03.30 |
[크롤링] BeautifulSoup, Wadis 마감 상품 재고 체크 & 메일 발송 크롤링 (0) | 2022.03.30 |
[크롤링] Selenium_파파고 (1) | 2022.03.29 |
Comments