Ex08 이미지 수

박산해·2025년 3월 27일

from selenium import webdriver as wb
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time

파일,폴더를 생성or삭제할때 사용하는 라이브러리

import os

이미지의 경로를 파일로 변환 라이브러리

from urllib.request import urlretrieve

폴더생성

대화 : 바탕화면에 이미지라는 폴더가 없다면, 바탕화면 이미지라는 폴더를 만들어라.

if not os.path.isdir("C:/Users/smhrd1/Desktop/이미지") :
os.mkdir("C:/Users/smhrd1/Desktop/이미지")

이미지 데이터 수집

driver = wb.Chrome()

driver.get("https://search.naver.com/search.naver?ssc=tab.image.all&where=image&sm=tab_jum&query=%EA%B3%A0%EC%96%91%EC%9D%B4")

이미지 태그 수집

img = driver.find_elements(By.CSS_SELECTOR,"#main_pack > section > div.api_subject_bx._fe_image_tab_grid_root.ani_fadein > div > div > div.image_tile._fe_image_tab_grid > div > div > div > div > img")

비어있는 리스트에 src 속성값만 저장 = 이미지의 주소

src = []
for i in range(len(img)) :
src.append(img[i].get_attribute("src"))

#이미지의 경로를 파일로 변환

대화 : src에있는 값을 하나씩 꺼내서, 바탕화면에 이미지 폴더에 저장해줘

for i in range(len(src)) :
urlretrieve(src[i],"C:/Users/smhrd1/Desktop/이미지/"+str(i)+".jpg")

while문을 활용해서 스크롤을 끝까지 내리기.

while True :

# 스크롤을 누루기 전 상태의 페이지 정보
first = driver.page_source
body = driver.find_element(By.CSS_SELECTOR,"body")
body.send_keys(Keys.END)
time.sleep(1)
after = driver.page_source
if first == after :
    break
# 대화 : 지금 페이지의 정보와 누른 후의 정보가 같다면 멈춰라 아니라면? 스크롤 내려라

이번 실습 정리

1) os 라이브러리 : 파일이나 폴더를 생성, 삭제,조회..할때 사용한다.
2) 속성추출 : get_attribute("속성이름")
- 사용처 : img태그의 src값, a태그의 href값 저장
3) 무한스크롤 : while문을 통해서 스크롤 내리기 전, 후를 비교하여 스크롤을 끝까지 내릴 수 있다.

0개의 댓글