inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[신규 개정판] 이것이 진짜 크롤링이다 - 기본편

2023.08.18 정상 동작하는 코드 공유

551

스타트코딩

작성한 질문수 5

0

현재 정상적으로 동작하는 코드는 아래와 같습니다

<02_셀레니움_무한스크롤.py>

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
import time

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

# 불필요한 에러 메시지 없애기
chrome_options.add_experimental_option("excludeSwitches", ["enable-logging"])

# 브라우저 생성
browser = webdriver.Chrome(options=chrome_options)

# 웹 사이트 열기
browser.get('https://www.naver.com')

# 쇼핑 메뉴 클릭하기
browser.find_element(By.CSS_SELECTOR, ".service_icon.type_shopping").click()
time.sleep(2)

# 새창을 바라보게 만들기
new_window = browser.window_handles[1]
browser.switch_to.window(new_window)

# 화면 최대화 해야지 검색창이 보임
browser.maximize_window()

# 검색창 클릭
search = browser.find_element(By.CSS_SELECTOR, "input._searchInput_search_text_3CUDs")
search.click()

# 검색어 입력
search.send_keys("아이폰13")
search.send_keys(Keys.ENTER)

# 스크롤 전 높이
before_h = browser.execute_script("return window.scrollY")

# 무한 스크롤
while True:
    # 맨 아래로 스크롤 내린다.
    browser.find_element(By.CSS_SELECTOR, "body").send_keys(Keys.END)

    # 스크롤 사이 페이지 로딩 시간
    time.sleep(1)

    # 스크롤 후 높이
    after_h = browser.execute_script("return window.scrollY")
    if after_h == before_h:
        break
    before_h = after_h

# 상품 정보 div
items = browser.find_elements(By.CSS_SELECTOR, ".product_item__MDtDF")

for item in items:
    name = item.find_element(By.CSS_SELECTOR, ".product_title__Mmw2K").text
    try:
        price = item.find_element(By.CSS_SELECTOR, ".price_num__S2p_v").text
    except:
        price = "판매중단"
    link = item.find_element(By.CSS_SELECTOR, ".product_title__Mmw2K > a").get_attribute('href')
    print(name, price, link)
    

<03_csv파일로저장하기.py>

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
import time
import csv

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

# 불필요한 에러 메시지 없애기
chrome_options.add_experimental_option("excludeSwitches", ["enable-logging"])

# 브라우저 생성
browser = webdriver.Chrome(options=chrome_options)

# 웹 사이트 열기
browser.get('https://www.naver.com')

# 쇼핑 메뉴 클릭하기
browser.find_element(By.CSS_SELECTOR, ".service_icon.type_shopping").click()
time.sleep(2)

# 새창을 바라보게 만들기
new_window = browser.window_handles[1]
browser.switch_to.window(new_window)

# 화면 최대화 해야지 검색창이 보임
browser.maximize_window()

# 검색창 클릭
search = browser.find_element(By.CSS_SELECTOR, "input._searchInput_search_text_3CUDs")
search.click()

# 검색어 입력
search.send_keys("아이폰13")
search.send_keys(Keys.ENTER)

# 스크롤 전 높이
before_h = browser.execute_script("return window.scrollY")

# 무한 스크롤
while True:
    # 맨 아래로 스크롤 내린다.
    browser.find_element(By.CSS_SELECTOR, "body").send_keys(Keys.END)

    # 스크롤 사이 페이지 로딩 시간
    time.sleep(1)

    # 스크롤 후 높이
    after_h = browser.execute_script("return window.scrollY")
    if after_h == before_h:
        break
    before_h = after_h

# 파일 생성
f = open(r"C:\source\startcoding\startcoding_crawling\03_네이버_쇼핑_크롤링\data.csv", 'w', encoding='CP949', newline='')
csvWriter = csv.writer(f)

# 상품 정보 div
items = browser.find_elements(By.CSS_SELECTOR, ".product_item__MDtDF")

for item in items:
    name = item.find_element(By.CSS_SELECTOR, ".product_title__Mmw2K").text
    try:
        price = item.find_element(By.CSS_SELECTOR, ".price_num__S2p_v").text
    except:
        price = "판매중단"
    link = item.find_element(By.CSS_SELECTOR, ".product_title__Mmw2K > a").get_attribute('href')
    print(name, price, link)
    csvWriter.writerow([name, price, link])

f.close()

python 웹-크롤링

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴이에요. 입력하신 코드는 셀레니움을 사용하여 네이버 쇼핑에서 아이폰13을 검색하고 무한 스크롤을 하는 코드인 것 같아요. 혹시 코드 실행 중 문제가 있으셨나요? 문제가 있다면 어떤 문제가 발생했는지 알려주세요. 더 자세한 도움을 드릴 수 있을 거에요!

Live server 를 이용 해보고 싶은데 확장메뉴 설치가 막혀 있어요

0

64

2

'팀 단위 AI 업무 혁신' 자문 관련하여 문의드리고자 합니다. (연락처 요청)

0

39

1

import requests from bs4 import BeatifulSoup 이 단계에서 안 되네요

0

77

2

requests 관련 질문

1

138

2

설치 관련

0

132

2

vs code 결과출력이 안됩니다

0

143

1

크롤링 관련 질문입니다

0

211

2

word wrap 체크 후에도 콘솔 한줄로 출력되는현상

0

190

1

주피터에서 pip오류가 계속납니다

0

1084

3

강의 "requests, Beautifulsoup4 사용법 빠르게 알아보기"에서 질문이있습니다.

0

172

2

네이버쇼핑 검색창 넘어가기전 팝업창이 안사라져요

0

368

1

html주소를 다른 컴터에서도 접속하기

0

243

2

pandas 설치하는데 오류가 나서요

0

2709

1

실행오류

0

215

1

네이버쇼핑 무한스크롤 안되시는분들 모바일네이버로 실습해보세요

0

263

1

뉴스 페이지에 페이지 번호가 없는데 어떻게 가져오나요?

0

233

2

네이버 쇼핑에 팝업창이 뜨기 시작했어요 도와주세요 ㅠㅠ

0

724

3

셀레니움 실습 시 창이 자동 차단되면서 꺼집니다.

0

665

2

낮은 가격순을 클릭하는 문을 추가하고싶습니다.

0

305

2

pip는 내부 또는 외부명령 ,실행할 수 있는 프로그램

0

3394

2

이런오류는 어떤 오류인가요

0

661

1

창이 두개떠요/쇼핑검색도 안되요 ㅜ

0

334

2

약간 변태(?)같지만 해당 코드를 깔끔하게 함수로 리팩토링해보았습니다

0

338

2

과제 답안을 보지않고 스스로 구글링해서 만든 웹 크롤링 프로그램(10페이지 단위) 코드입니다.

0

760

2