Notice
Recent Posts
Link
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- ubuntu
- aws code pipeline
- deep learning
- ubuntu에서 docker 사용
- token check
- Python
- 긍부정문 판별
- docker container
- 한글깨짐해결
- mask image training
- ceasor
- 춤 유사도 평가
- pill ai
- 369게임 만들기
- 시저암호 코딩
- docker
- flower classification
- iris dataset
- 오목앱 만들기
- Container
- yolo mask
- docker in ubuntu
- C
- Java
- pill classification
- AI
- dji tello
- 오목게임앱
- 360게임 만들기 with c
- drone control
Archives
- Today
- Total
월레스와 그로밋: 코딩의 날
web_crawling(무신사에서 캉골 브랜드 제품의 제품명 & 제품가격 크롤링) 본문
def test1():
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
import json
import csv
import pyautogui
import pyperclip
import time
from selenium.webdriver.common.keys import Keys
# 브라우저 생성 후 꺼짐 방지 & 최신 버전 유지
options = Options()
options.add_experimental_option("detach", True)
service = Service(executable_path= ChromeDriverManager().install())
browser = webdriver.Chrome(service=service, options=options)
browser.implicitly_wait(10)
browser.get("https://www.musinsa.com/main/113?NaPm=ct%3Dlxbkyaun%7Cci%3Dcheckout%7Ctr%3Dds%7Ctrx%3Dnull%7Chk%3D2c2bee0776cd01ca2f32e26fb8bbe20216b3dc0b")
browser.maximize_window() # 화면크기를 최대한 키우기
# 검색 버튼 클릭
#headerCommonLayout > header > div > div.common-layout__sc-do5azq-2.common-layout__sc-do5azq-4.kjbdqo.esZxYr > button
browser.find_element(By.CSS_SELECTOR, "#headerCommonLayout > header > div > div.common-layout__sc-do5azq-2.common-layout__sc-do5azq-4.kjbdqo.esZxYr > button").click()
# 검색창 클릭
browser.find_element(By.CSS_SELECTOR,"#commonSearchModule > main > header > div > input").click()
# 검색어 입력
pyperclip.copy('kangol')
pyautogui.hotkey('ctrl', 'v')
time.sleep(3)
browser.find_element(By.XPATH, '/html/body/div[2]/main/section/div/ul/li[1]/a').click()
#kangol_site = browser.find_element(By.CSS_SELECTOR, "#commonSearchModule > main > section > div > ul > li:nth-child(1) > a").get_attribute("href")
# browser.get(kangol_site)
browser.find_element(By.CSS_SELECTOR,"body").send_keys(Keys.PAGE_DOWN)
time.sleep(5)
# 상의 옷 클릭
browser.find_element(By.CSS_SELECTOR, 'body > div.musinsa-wrapper.n-brand.container.n-brand-product > div.n-content-brand > section.brands-filter-image.set-draggable > button:nth-child(1)').click()
# 스크롤 전 화면큭
before = browser.execute_script("return window.scrollY")
# 무한 스크롤
while True:
browser.find_element(By.CSS_SELECTOR,"body").send_keys(Keys.END)
time.sleep(2)
after = browser.execute_script("return window.scrollY")
if before == after:
break
before = after
# 상품 정보 추출 : 상품명, 가격, 상세페이지
prod_list = [] # [[], [], [], ...]
#listProducts > li:nth-child(1)
item_list = browser.find_elements(By.CSS_SELECTOR, "#listProducts > li")
for item in item_list:
dic = {}
#listProducts > li:nth-child(1) > div.brandshop-product__info > a
dic["제품명"] = item.find_element(By.CSS_SELECTOR, "div.brandshop-product__info > a").text
#listProducts > li:nth-child(1) > div.brandshop-product__info > div.brandshop-product__price
dic["제품가격"] = item.find_element(By.CSS_SELECTOR, "div.brandshop-product__info > div.brandshop-product__price > div > strong").text
prod_list.append(dic)
time.sleep(3)
browser.quit()
# json 파일 저장
print(">>> JSON 파일 출력 <<<")
with open("musinsa.json","w", encoding="utf8") as f:
json.dump(prod_list, f, ensure_ascii = False)
# CSV 파일 저장
print(">>> CSV 파일 출력 <<<")
with open("musinsa.csv", "w", newline='', encoding="utf8") as f:
writer = csv.DictWriter(f, fieldnames=["제품명", "제품가격"])
writer.writeheader()
writer.writerows(prod_list)
test1()
자동으로 무신사 사이트에서 캉골 브랜드를 검색합니다.
그리고 그 안의 제품들의 제품명과 가격을 가져와서 json과 csv 파일로 목록을 만들어줍니다.
밑 ppt는 무신사, 캉골, 웹 크롤링 코드에 대한 간단한 설명과 결과가 담겨져 있습니다.
웹_크롤링.pptx
1.42MB
'Python > Etc' 카테고리의 다른 글
토큰 수 출력해보기 (0) | 2025.03.25 |
---|