바나나b2b 엑셀 크로울링 (이셀러스활용2)
2022. 11. 15. 13:49ㆍ디지털장사
반응형
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
import pyautogui
import time
import pyperclip
import openpyxl
#크롬 드라이버 자동 업그레이드
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.keys import Keys
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "data"
#브라우저 꺼짐 방지
chrome_options = Options()
# chrome_options.add_experimental_option('detach',True)
chrome_options.add_argument("user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36")
#불필요한 에러메시지 없애기
chrome_options.add_experimental_option("excludeSwithes",["enable-logging"])
service = Service(executable_path=ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)
driver.set_window_size(1400, 1000)
time.sleep(10)
tabs = driver.window_handles
while len(tabs) != 1:
driver.switch_to.window(tabs[1])
driver.close()
tabs = driver.window_handles
driver.switch_to.window(tabs[0])
time.sleep(3)
driver.find_element(By.CSS_SELECTOR, "body > div.wrap_body > div:nth-child(1) > div:nth-child(2) > div.utilWrap > div > div > a:nth-child(2)").click()
time.sleep(2)
driver.find_element(By.CSS_SELECTOR, "#id").send_keys("아이디")
driver.find_element(By.CSS_SELECTOR, "#pass").send_keys("비번")
driver.find_element(By.CSS_SELECTOR, "#Frm > div.member_wrap.p-login > a > span").click()#로그인 완료
time.sleep(10)
while len(tabs) != 1: #광고 없애기
driver.switch_to.window(tabs[1])
driver.close()
tabs = driver.window_handles
driver.switch_to.window(tabs[0])
driver.find_element(By.CSS_SELECTOR,"body > div.wrap_body > div:nth-child(1) > div:nth-child(2) > div.utilWrap > div > div > a:nth-child(8)").click()
time.sleep(5)
driver.find_element(By.CSS_SELECTOR,'body').send_keys(Keys.END)
driver.find_element(By.CSS_SELECTOR,'body').send_keys(Keys.HOME)
time.sleep(6)
for i in range(3,50):
driver.find_element(By.XPATH,"//*[@id='cartBody']/tr["+str(i)+"]/td[2]/div/div/a").click()
time.sleep(4)
driver.find_element(By.CSS_SELECTOR,'body').send_keys(Keys.END)
driver.find_element(By.CSS_SELECTOR,'body').send_keys(Keys.HOME)
time.sleep(4)
num = i
management_code = driver.find_element(By.CSS_SELECTOR,"#Frm > div > div.infoWrap > div > div.goods_info > dl.goods_code > dd").text
folder_name = "바나나건강식품"
sanpum = driver.find_element(By.CSS_SELECTOR,"#Frm > div > div.infoWrap > div > h1").text
price = driver.find_element(By.CSS_SELECTOR,"#Frm > div > div.infoWrap > div > div:nth-child(12) > em > b").text
su = 999
one_san = driver.find_element(By.CSS_SELECTOR,"#Frm > div > div.infoWrap > div > div.goods_info > dl.place_of_origin > dd").text
img_1 = driver.find_element(By.CSS_SELECTOR,'#mainImg > li > span > img').get_attribute('src')
img_2 = driver.find_element(By.CSS_SELECTOR,'#mainImg > li > span > img').get_attribute('src')
for _ in range(6):
driver.find_element(By.CSS_SELECTOR,'body').send_keys(Keys.PAGE_DOWN)
time.sleep(3)
try:
page = driver.find_element(By.CSS_SELECTOR,"#tbContent > tbody > tr > td > div.contentZoom.contentSize > p > a > img").get_attribute('src')
except:
try:
page = driver.find_element(By.CSS_SELECTOR," #tbContent > tbody > tr > td > div.contentZoom.contentSize > div > p > a > img").get_attribute('src')
except:
try:
page = driver.find_element(By.CSS_SELECTOR,"#tbContent > tbody > tr > td > div.contentZoom.contentSize > div > img").get_attribute('src')
except:
page = ""
sangse_page = "<center><img src ="'"' +str(page)+ '"'"></center>"
# print(num, sangse_page)
ws.append([num,management_code,folder_name,'',sanpum,price,su,'','',one_san,'살세설명 참조','','',img_1,img_2,'','','','',sangse_page,])
time.sleep(4)
driver.back()
time.sleep(4)
wb.save("파일위치/파일이름.xlsx")
time.sleep(10)
허접함 .....

엑셀사용을 위해 openpyxl 추가
cmd 창에다 pip install openpyxl
하면 설치된다
코딩은 위와 같이 하면 된다.
셀레니움 사용할때 vscode 버그를 쓰면 딱딱 잡아줘서 편하게 애러를 수정할수 있었던 것 같다

바나나 B2B는 html 구조가 조금 달라 상세페이지 따오기 불편하였다 (예외처리)
그리고 가공을 하면 상세페이지가 완성이 된다.
두근대는 순간
바탕화면에 머가하나 생겼다.
열어보자
하하하 성공이다 관리코드와 상품명은 가렸다.
이것을 엑셀파일에 옮기고 수정......
드디어 크롤링이 완성되는 순간이다.
실패도 있었다
실패한 부분을 보니 이미지 11번가 이미지 처리였다.
https:// 를 http:// 로 수정하니 되기는 했는데 조금 불안하다.
대량등록을 시작한후 처음 일하는듯 하는 기분을 느겼다.
크롤링이 조금 들어가면 남이 트라이 하지 않는 도매처 상품을 대량으로 끌어다 올수 있으니 이거 이점아닐까?
계속 공부해 보아야 겠다.
https://www.youtube.com/channel/UCHwhZ7HPBhUh2IscPSL0pHA
스타트코딩
코딩 입문자들을 위해 쉽고 재미있는 강의컨텐츠를 만들고 있습니다~! [제작중인 컨텐츠] 파이썬기초 파이썬활용(크롤링, 자동화) 프론트엔드기초 (html, css, javascript, bootstrap)
www.youtube.com
유튜브 스타트 코딩 보고 했는데 도움 많이 받았다.
감사합니다.
반응형
'디지털장사' 카테고리의 다른 글
검색 연관(관련)키워드 불러오기 with python (상품가공하는데 시간이 너무걸려 만듬) (0) | 2023.02.24 |
---|---|
바나나 도매사이트 크로울링 해보기 (이셀러스 활용계획) (0) | 2022.11.14 |
python으로 엑셀 EMS2.0 카테고리 넣기 메모 이셀러스 형식 도매창고에서 받아 수정 (0) | 2022.11.08 |
이셀러스 상품등록 오류 메모(스마트스토어) (0) | 2022.08.09 |