무한 스크롤 페이지 크롤링
공부하게 된 이유
크롤링을 하는 방법은 여러가지가 있다. 쉬운 순서대로 나열해보자면 아래와 같다.(내 기준)
1. api 를 통해 가져오는 방법
2. bs4를 사용하여 가져오는 방법
3. selenium 을 사용해 가져오는 방법
무한 스크롤 사이트인 경우에는 bs4를 통해서 한번에 가져올 수가 없다.
따라서 selenium 을 통해 최하단 페이지까지 가서 페이지를 긁어오는 방법을 사용해야겠다고 생각했다.
무한 스크롤 크롤링
- selenium 을 사용하는 방법이다.
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
url = "crawling_site_url"
driver = webdriver.Chrome('chromedriver_path')
driver.get(url)
elem = driver.find_element_by_tag_name("body")
last_height = driver.execute_script("return document.body.scrollHeight")
while True:
scroll_down = 0
while scroll_down < 10:
elem.send_keys(Keys.PAGE_DOWN)
time.sleep(0.2)
scroll_down += 1
new_height = driver.execute_script("return document.body.scrollHeight")
if new_height == last_height:
print("********" + lecture['category'] + ' / ' + lecture['subCategory'] + " break********")
break
last_height = new_height
elem = driver.find_element_by_tag_name("body")
을 통해 우선 내용 부분을 elem 에 담는다.
last_height = driver.execute_script("return document.body.scrollHeight")
을 통해
현재 body 부분의 높이를 last_height 에 담는다.
- 반복문을 통해 페이지 최하단까지 내려가는 코드.
elem.send_keys(Keys.PAGE_DOWN)
page down 버튼을 누르게해서 계속해서 페이지 하단으로 내려가는 코드.
new_height = driver.execute_script("return document.body.scrollHeight")
page down 버튼 10번을 누른 후에 새로운 현재 높이를 알아내서 new_height 변수에 담는다.
if new_height == last_height:
만약 이전의 높이와 같다면 결국 최하단이라고 판단.
last_height = new_height
이전의 높이와 다르다면 last_height 에 new_height 값을 넣어줘서 갱신시켜준다.
참고사이트
Author And Source
이 문제에 관하여(무한 스크롤 페이지 크롤링), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@insutance/무한-스크롤-페이지-크롤링
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
url = "crawling_site_url"
driver = webdriver.Chrome('chromedriver_path')
driver.get(url)
elem = driver.find_element_by_tag_name("body")
last_height = driver.execute_script("return document.body.scrollHeight")
while True:
scroll_down = 0
while scroll_down < 10:
elem.send_keys(Keys.PAGE_DOWN)
time.sleep(0.2)
scroll_down += 1
new_height = driver.execute_script("return document.body.scrollHeight")
if new_height == last_height:
print("********" + lecture['category'] + ' / ' + lecture['subCategory'] + " break********")
break
last_height = new_height
elem = driver.find_element_by_tag_name("body")
을 통해 우선 내용 부분을 elem 에 담는다.last_height = driver.execute_script("return document.body.scrollHeight")
을 통해현재 body 부분의 높이를 last_height 에 담는다.
elem.send_keys(Keys.PAGE_DOWN)
page down 버튼을 누르게해서 계속해서 페이지 하단으로 내려가는 코드.new_height = driver.execute_script("return document.body.scrollHeight")
page down 버튼 10번을 누른 후에 새로운 현재 높이를 알아내서 new_height 변수에 담는다.
if new_height == last_height:
만약 이전의 높이와 같다면 결국 최하단이라고 판단.last_height = new_height
이전의 높이와 다르다면 last_height 에 new_height 값을 넣어줘서 갱신시켜준다.Author And Source
이 문제에 관하여(무한 스크롤 페이지 크롤링), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@insutance/무한-스크롤-페이지-크롤링저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)