-
카테고리
-
해결 여부
미해결
이미지 크롤링 중 data:image/gif;base64 로 표기되며 안되는 경우 문의드립니다!
22.07.26 15:13 작성 조회수 1.86k
1
이것이 진짜 크롤링이다 - 실전편
네이버 이미지 주소추출 수업을 듣고있다가 질문드려요!
이미지의 URL을 크롤링 하던 중 약 550개 이미지 URL 크롤링 중 350개 정도는
아래와 같이 URL이 크롤링 되더라구요 .. 그러면서 이미지 다운도 안되구요.. 뭐가 문제일까요 .ㅠ 도와주세요!
data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7
== 소스 코드==
from webbrowser import BackgroundBrowser
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches", ["enable-logging"])
url = "https://search.naver.com/search.naver?where=image&sm=tab_jum&query=%EB%A7%A5%EB%B6%81"
browser = webdriver.Chrome("C:/chromedriver.exe")
browser.implicitly_wait(10)
browser.maximize_window()
browser.get(url)
# 무한 스크롤 처리
# 스크롤 전 높이
before_h = browser.execute_script("return window.scrollY")
# 무한 스크롤
while True:
#맨 아래로 스크롤을 내린다.
# browser.find_element(By.CSS_SELECTOR,"body").send_keys(Keys.END)
browser.find_element_by_css_selector("body").send_keys(Keys.END)
# 스크롤 사이 페이지 로딩 시간
time.sleep(3)
# 스크롤 후 높이
after_h = browser.execute_script("return window.scrollY")
if after_h == before_h:
break
before_h = after_h
# 이미지 태그 추출
imgs = browser.find_elements_by_css_selector("a.link_thumb._imageBox._infoBox>._image._listImage")
for i, img in enumerate (imgs,1) :
img_src = img.get_attribute("src")
print(i, img_src)
답변을 작성해보세요.
0
무니
2023.10.10
LazyLoading 방식을 사용하는 웹사이트를 크롤링 할 때 발생할 수 있는 문제입니다.
모든 이미지가 미리 로딩되지 않고, 사용자의 스크롤에 따라 뷰포트 내로 들어왔을 때 로딩됩니다.
스크롤을 한번에 밑으로 내리지 말고 끊어서 내리는 방식을 사용해보세요.
0
김태현
2022.11.15
저도 배우는 과정이라 잘은 모르겠지만 이 블로그 보고 해결했습니다.
> https://velog.io/@msjeong/naver-image-crawler
썸네일 가져오는 방식으로는 해결하지 못했고 밑에 클릭해서 원본 데이터를 가져오는 방식으로 하니 해결됐었습니다. (그래도 잘 모르겠네요 ㅋㅋ)
답변 2