파이썬 tkinter를 이용한 UI 만들기 세 번째 영상입니다. 쿠팡 크롤러가 수집한 인기상품 TOP 10 리스트를 내 PC에 저장하는 방법을 알려 드립니다. 초보자도 쉽게 이해할 수 있도록 코드별 자세하게 설명합니다.
온라인 상품 판매나 제휴 마케팅을 위해 판매 데이터 구축이 필요한 분들이라면 꼭 시청하시면 좋겠네요. 나만의 크롤러를 만들어 판매 데이터를 구축해 보아요.
추가/개선한 소스코드입니다.
1. 쿠팡 크롤링 시 상품 가격 가져오는 로직을 수정함 - sale가격을 먼저 찾고 없으면 기본 가격을 찾게함, 기본가격 자체가 없는 경우 에러가 발생하여 순서를 수정하고 예외처리함.
2. 검색 키워드 입력 후 키보드 엔터 처리를 추가함. 마우스 클리과 같은 효과임. 각 위젯의 config에서 command는 클릭 처리를 위한 것이고 bind는 이를 포함해 더 많은 기능을 처리할 수 있다. 예를 들면 키보드 엔터, 마우스 오른쪽 버튼 등...
3. 파일명 자동 생성 로직과 검색 결과 파일 저장하는 코드
import tkinter as tk
from selenium import webdriver
from selenium.webdriver.common.by import By
import tkinter.messagebox as msg
from datetime import datetime
win = tk.Tk()
win.geometry("600x550")
win.option_add("*font","맑은고딕 15")
win.title("테스트 window")
lblKeyword = tk.Label(win,text="Keyword")
lblKeyword.pack()
# 검색어 입력
def on_enter_key(event):
btnSearch.invoke()
entKeyword = tk.Entry(win,width=20)
entKeyword.pack()
entKeyword.focus()
entKeyword.bind("<Return>",on_enter_key)
# 상품 검색
def btn_search_click() :
lb.delete(0,tk.END)
keyword = entKeyword.get()
drvier = webdriver.Chrome()
drvier.get (f"https://www.coupang.com/np/search?q={keyword}")
drvier.implicitly_wait(5)
results = drvier.find_elements(By.CLASS_NAME, "descriptions-inner")
for rank, r in enumerate(results,1) :
if rank > 10 :
break
try :
name = r.find_element(By.CLASS_NAME, "name")
print(f"*** {name.text} ")
price = r.find_element(By.CLASS_NAME, "price")
sale_price = price.find_element(By.CLASS_NAME, "sale")
if sale_price :
last_price = sale_price.find_element(By.CLASS_NAME,"price-value")
print(f"{rank}위 {name.text} {last_price.text}")
lb.insert(tk.END, f"{rank}위 {name.text} {last_price.text}원")
else :
base_price = price.find_element(By.CLASS_NAME,"price-info")
print(f"{rank}위 {name.text} {base_price.text} ")
lb.insert(tk.END, f"{rank}위 {name.text} {base_price.text}원")
except :
print(f"skip")
drvier.quit()
# 검색 버튼
btnSearch = tk.Button(win, text="쿠팡검색")
btnSearch.config(command=btn_search_click)
btnSearch.pack()
# 검색 결과 출력
lb = tk.Listbox(win,width=50,height=20)
lb.pack()
# 파일 저장
def btn_save_click() :
now = datetime.now()
file_name = entKeyword.get() + "_" + now.strftime("%y%m%d_%H%M")
with open(f"data/{file_name}.txt","w",encoding="utf-8") as f:
for info in lb.get(0,tk.END):
f.write(info + "\n")
msg.showinfo("저장","파일 저장 완료")
btnSave = tk.Button(win,text="저장")
btnSave.config(command=btn_save_click)
btnSave.pack()
win.mainloop()
반응형
'코드리뷰 > chatGPT(Python)코드' 카테고리의 다른 글
아이폰은 왜 잘 팔릴까? 심플한 UI 만들기 5단계 비법 공개 (2) | 2024.10.12 |
---|---|
쿠팡에서 어떤 스마트폰이 잘 팔릴까? - 나만의 크롤러 만들기 (4) | 2024.09.29 |
초보도 10분이면 만드는 쿠팡 크롤링 UI, 따라해 보세요! (5) | 2024.09.25 |
댓글