오늘은 파이썬으로 네이버 쇼핑 상품 크롤링 하는 방법에 대해 알아보겠습니다. 

 

 

 

네이버쇼핑상품크롤링

파이썬 네이버 쇼핑 상품 크롤링하기

먼저 크롤링을 하기 위해서는 구글 크롬과 구글크롬드라이버를 다운로드 받아주셔야 합니다.

크롬버전을 확인하기 위해서 인터넷에서 오른쪽 점 세개 버튼을 누르시고 설정으로 들어가줍니다. 그리고 설정에서 크롬 정보를 누르셔서 버전을 확인해줍니다. 그리고 크롬드라이버 홈페이지에서 그와 맞는 버전을 설치해줍니다.

 

 

저는 네이버에서 핸즐골프장갑이라고 검색한다음에 낮은가격순으로 확인을 해보는 코드를 작성해보았습니다.

 

 

import time
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
import pandas as pd

# chromedriver 위치에서 코드작업 필수
chrome_options = Options()
driver = webdriver.Chrome(service=Service(), options=chrome_options)
URL = 'https://search.shopping.naver.com/search/all?frm=NVSHATC&origQuery=%ED%95%B8%EC%A6%90%EA%B3%A8%ED%94%84%EC%9E%A5%EA%B0%91&pagingIndex=1&pagingSize=40&productSet=total&query=%ED%95%B8%EC%A6%90%EA%B3%A8%ED%94%84%EC%9E%A5%EA%B0%91&sort=price_asc×tamp=&viewType=list#'
driver.get(URL)

SCROLL_PAUSE_SEC = 1

# 스크롤 높이 가져옴
last_height = driver.execute_script("return document.body.scrollHeight")

while True:
    # 끝까지 스크롤 다운
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

    # 1초 대기
    time.sleep(SCROLL_PAUSE_SEC)

    # 스크롤 다운 후 스크롤 높이 다시 가져옴
    new_height = driver.execute_script("return document.body.scrollHeight")
    if new_height == last_height:
        break
    last_height = new_height

soup = BeautifulSoup(driver.page_source, 'html.parser')
goods_list = soup.select('div.basicList_item__0T9JD')

print(goods_list)

# list들
list_name = []
list_price = []
list_date = []
list_seller = []
list_img = []
list_url = []

for v in goods_list:
    item_name = v.select_one('div.basicList_title__VfX3c > a').get('title')
    list_name.append(item_name)
    item_price = v.select_one('strong.basicList_price__euNoD > span').text
    list_price.append(item_price)
    item_date = v.select_one('div.basicList_etc_box__5lkgg > span').text.split(' ')[1]
    list_date.append(item_date)
    if v.select_one('div.basicList_mall_title__FDXX5 > a > img') == None:
        item_seller = v.select_one('div.basicList_mall_title__FDXX5 > a').text
    else:
        item_seller = v.select_one('div.basicList_mall_title__FDXX5 > a > img').get('alt')
    list_seller.append(item_seller)

    item_URL = v.select_one('div.basicList_title__VfX3c > a').get('href')
    list_url.append(item_URL)

driver.close()

df = pd.DataFrame(
    {
        '상품명': list_name,
        '가격': list_price,
        '등록일': list_date,
        '판매자': list_seller,
        '상품 URL': list_url
    }
)
df.to_excel(excel_writer='testtest.xlsx')

print(df)

 

import time
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
import pandas as pd

# chromedriver 위치에서 코드작업 필수
chrome_options = Options()
driver = webdriver.Chrome(service=Service(), options=chrome_options)
URL = ' https://search.shopping.naver.com/search/all?frm=NVSHATC&origQuery=%ED%95%B8%EC%A6%90%EA%B3%A8%ED%94%84%EC%9E%A5%EA%B0%91&pagingIndex=1&pagingSize=40&productSet=total&query=%ED%95%B8%EC%A6%90%EA%B3%A8%ED%94%84%EC%9E%A5%EA%B0%91&sort=price_asc&timestamp=&viewType=list#' 
driver.get(URL)

SCROLL_PAUSE_SEC = 1

# 스크롤 높이 가져옴
last_height = driver.execute_script("return document.body.scrollHeight")

while True:
    # 끝까지 스크롤 다운
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

    # 1초 대기
    time.sleep(SCROLL_PAUSE_SEC)

    # 스크롤 다운 후 스크롤 높이 다시 가져옴
    new_height = driver.execute_script("return document.body.scrollHeight")
    if new_height == last_height:
        break
    last_height = new_height

soup = BeautifulSoup(driver.page_source, 'html.parser')
goods_list = soup.select('div.basicList_item__0T9JD')

print(goods_list)

# list들
list_name = []
list_price = []
list_date = []
list_seller = []
list_img = []
list_url = []

for v in goods_list:
    item_name = v.select_one('div.basicList_title__VfX3c > a').get('title')
    list_name.append(item_name)
    item_price = v.select_one('strong.basicList_price__euNoD > span').text
    list_price.append(item_price)
    item_date = v.select_one('div.basicList_etc_box__5lkgg > span').text.split(' ')[1]
    list_date.append(item_date)
    if v.select_one('div.basicList_mall_title__FDXX5 > a > img') == None:
        item_seller = v.select_one('div.basicList_mall_title__FDXX5 > a').text
    else:
        item_seller = v.select_one('div.basicList_mall_title__FDXX5 > a > img').get('alt')
    list_seller.append(item_seller)

    item_URL = v.select_one('div.basicList_title__VfX3c > a').get('href')
    list_url.append(item_URL)

driver.close()

df = pd.DataFrame(
    {
        '상품명': list_name,
        '가격': list_price,
        '등록일': list_date,
        '판매자': list_seller,
        '상품 URL': list_url
    }
)
df.to_excel(excel_writer='testtest.xlsx')

print(df)

 

 

이렇게 코드를 실행해주시면 위 화면처럼 엑셀 화면이 생성되는 것을 확인하실 수 있습니다.

 

 

 

 

마무리

이상 네이버에서 상품 크롤링 하는 방법에 대해 알아봤습니다.

 

 

관련글 더보기

2023.02.19 - [파이썬(Python)] - 파이썬으로 임의의 비밀번호 만드는 프로그램 예시

 

파이썬으로 임의의 비밀번호 만드는 프로그램 예시

오늘은 파이썬으로 임의의 비밀번호 만드는 프로그램 예시에 대해 알아보겠습니다. 파이썬 임의의 비밀번호 만들기 파이썬에서 임의의 비밀번호 만들기 예시 입니다. 위 코드에서는 먼저 random

lotto4989.tistory.com

 

오늘은 파이썬으로 임의의 비밀번호 만드는 프로그램 예시에 대해 알아보겠습니다.

 

 

 

파이썬임의의비밀번호만드는프로그램

파이썬 임의의 비밀번호 만들기

파이썬에서 임의의 비밀번호 만들기 예시 입니다.

 

위 코드에서는 먼저 random 과 string 모듈을 사용합니다. 

random 모듈을 사용하여 임의의 문자 시퀀스를 생성하고 string 모듈을 사용하여

사용하려는 문자 및 숫자 , 문장 부호를 포함하는 문자열을 가져와서 암호를 생성합니다.

 

그리고 비밀번호 길이를 입력으로 받아서 주어진 길이의 무작위 암호를 반환하는 함수인

generate_password 를 정의 해야합니다. 이 함수는 먼저 암호를 생성하는 데 사용할

모든 문자를 연결하고 다음 루프를 사용하여 이 문자열에 

임의로 길이 문자를 선택하고 암호에 추가 합니다.

 

프로그램의 주요 부분에서 사용자에게 원하는 비밀번호 길이를

입력하도록 요청한 다음에 입력된 길이로 generate_password 함수를 호출하고 생성된 비밀번호를

콘솔에 출력합니다.

 

 

 

마무리

이상 파이썬으로 임의의 비밀번호 만드는 프로그램 예시에 대해 알아봤습니다.

 

 

관련글 더보기

2023.02.14 - [파이썬(Python)] - 파이썬으로 이메일 자동으로 보내는 방법?

 

파이썬으로 이메일 자동으로 보내는 방법?

자동으로 이메일을 보낼 수 있는 프로그램을 만드려면 프로그래밍 언어와 프로그래밍 방식으로 이메일을 보낼 수 있는 이메일 라이브러리를 사용해야 합니다. 그렇게 프로그램을 만들기 위해

lotto4989.tistory.com

 

자동으로 이메일을 보낼 수 있는 프로그램을 만드려면 프로그래밍 언어와 프로그래밍 방식으로 이메일을 보낼 수 있는 이메일 라이브러리를 사용해야 합니다. 그렇게 프로그램을 만들기 위해 취할 수 있는 단계에 대해 알아보고 파이썬 코드에 대해 알아보겠습니다.

 

 

파이썬으로-이메일-자동으로보내기

개요

  1. 프로그래밍 언어 선택: Python은 단순성과 이메일 라이브러리의 가용성.
  2. 이메일 라이브러리 설치: 이메일을 보내려면 선택한 프로그래밍 언어로 이메일 라이브러리를 설치해야 합니다. Python에서는 내장 smtplib 라이브러리 또는 yagmail과 같은 타사 라이브러리를 사용할 수 있습니다.
  3. 이메일 서버 정보 설정: 이메일 서버에 연결하고 이메일을 보내려면 이메일 서버 정보(SMTP 서버, 포트, 사용자 이름 및 암호)를 제공해야 합니다. 이 정보는 일반적으로 이메일 제공업체에서 얻을 수 있습니다.
  4. 이메일을 보내는 코드 작성: 이메일 라이브러리를 사용하여 이메일 개체를 만들고 필요한 세부 정보를 추가할 수 있습니다(에, 제목, 본문 등)하고 이메일을 보냅니다.
  5. 프로세스 자동화: 프로그래밍 언어로 일정 라이브러리를 사용할 수 있습니다(예: schedule Python에서) 지정된 간격으로 이메일 전송 프로그램을 자동으로 실행하는 반복 작업을 설정합니다.

 

 

파이썬 예제코드

위 코드는 smtplib를 사용하는 Python의 예제 코드입니다.

 

이것은 단순한 예일 뿐이며 특정 요구 사항에 따라 이 코드를 사용자 지정하고 확장할 수 있는 여러 가지 방법이 있습니다. 또한 프로그램을 철저히 테스트하고 이메일 전송 과정에서 발생할 수 있는 오류를 처리해야 합니다.

 

 

 

 

마무리

이상 파이썬으로 이메일 자동으로 보내는 방법에 대해 알아봤습니다.

 

 

 

관련글 더보기

2022.07.13 - [파이썬(Python)] - 파이썬 문자열

 

파이썬 문자열

오늘은 파이썬 문자열에 대해 알아보겠습니다. 파이썬 문자열 문자열은 하나 또는 여러 개의 문자로 구성된 데이터형을 나타냅니다. 문자열을 나타낼 때는 문자 앞 뒤에 쌍 따옴표 또는 단 따옴

lotto4989.tistory.com

 

+ Recent posts