inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)

3단계 - 마지막 페이지 체크하는 방법

셀레니움이 버젼업을 해서 새로운 셀레니움 코드로 전체 코드 공유합니다.

896

최범석
1

강의는 셀레니움 구버전이라

새로운 버전의 셀레니움 코드를 공유합니다.

 

from ast import keyword
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
#css 선택자 를 사용하려면 By 가 있어야 함
from selenium.webdriver.common.by import By
#키전송하려면 Keys 가 있어야함
from selenium.webdriver.common.keys import Keys
# 크롬 드라이버 자동 업데이트
from webdriver_manager.chrome import ChromeDriverManager
#os 는 폴더만들기등 window 명령어를 수행함
import os
#잘은모르지만 일단 다운로드 하는데 필요함
import urllib.request
명령프롬프트를 띄워줌
import pyautogui

# 브라우저 꺼짐 방지
chrome_options = Options()
chrome_options.add_experimental_option("detach", True)

# 불필요한 에러 메시지 없애기
chrome_options.add_experimental_option("excludeSwitches", ["enable-logging"])
service = Service(executable_path=ChromeDriverManager().install())
driver = webdriver.Chrome(service=service, options=chrome_options)

#검색어 입력
keyword = pyautogui.prompt("검색어를 입력하세요>>>")

# 웹페이지 해당 주소 이동
if not os.path.exists(f'2.인프런수업/실전편/04.네이버이미지크롤링/{keyword}'):
    os.mkdir(f'2.인프런수업/실전편/04.네이버이미지크롤링/{keyword}')

url = f"https://search.naver.com/search.naver?where=image&sm=tab_jum&query={keyword}"
#로딩시 대기
driver.implicitly_wait(5)

#창 최대화
driver.maximize_window()

#주소이동
driver.get(url)
time.sleep(1)

#무한스크롤 처리
before_h = driver.execute_script("return window.scrollY")

#무한스크롤 
while True:
        #맨밑으로 스크로 ㄹ내리기
    driver.find_element(By.CSS_SELECTOR,"body").send_keys(Keys.END)

    time.sleep(1)

    after_h = driver.execute_script("return window.scrollY")

    if after_h == before_h:
        break
    before_h = after_h
    time.sleep(1)

#이미지 태그 추출

imgs = driver.find_elements(By.CSS_SELECTOR,"._image._listImage")

for i, img in enumerate(imgs, 1):
    #각이미지의 태그 추출
    img_src = img.get_attribute("src")
    print(i, img_src)
    urllib.request.urlretrieve(img_src, f'2.인프런수업/실전편/04.네이버이미지크롤링/{keyword}/{i}.png')

답변 1

0

스타트코딩

코드 공유 감사합니다~~~~!