잡동사니 블로그
[Python] 심심해서 만든 무신사 추천상품 크롤링 본문
백엔드 친구놈이 DB 연습 한다고 무신사 상품 정보를 일일히 가져오고 있길래 하나 만듬.
대충 라이브러리 설치법은
import pandas as pd
from bs4 import BeautifulSoup
from selenium import webdriver
import time
import random
driver = webdriver.Chrome()
ans=[]
#아우터, 상의, 하의, 신발, 가방
url = ['https://www.musinsa.com/categories/item/001',
'https://www.musinsa.com/categories/item/002',
'https://www.musinsa.com/categories/item/003',
'https://www.musinsa.com/categories/item/004',
'https://www.musinsa.com/categories/item/005']
for tag_url in url:
driver.get(tag_url)
tag_num = tag_url[-1]
print('시작 : ',tag_num)
time.sleep(2)
driver.maximize_window()
#각 상품 링크 추출
html_1 = driver.page_source
soup_1 = BeautifulSoup(html_1, 'html.parser')
elements=soup_1.find_all('a', attrs={'class':'img-block'})
href=[]
#추천 상품만
for element in elements:
p_link = element.get('href')
if 'www.musinsa.com/app/goods' in p_link and 'goods_rank' not in p_link:
href.append(p_link)
else :
continue
total=[]
for link in range(len(href)) :
time.sleep(1)
driver.get('https:'+href[link])
#과부하 막기를 위한 랜덤
time.sleep(random.random())
#상품명
title=driver.execute_script('return document.querySelector("#page_product_detail > div.right_area.page_detail_product > div.right_contents.section_product_summary > span > em").innerText;')
#품번
num = driver.execute_script('return document.querySelector("#product_order_info > div.explan_product.product_info_section > ul > li:nth-child(1) > p.product_article_contents").innerText;')
#가격
price = int(driver.execute_script('return document.querySelector("#goods_price").innerText;')[:-1].replace(",", ""))
#img 링크
img_src = 'https:'+driver.execute_script('return document.querySelector("#bigimg").getAttribute("src");')
#db key, tag, 품번, 상품명, 이미지링크, 가격
total.append((link,int(tag_num),num.split(' / ')[1], title, img_src, price))
ans.append(total)
일단 코드상으론 한페이지만 추출함.
구조는 각 페이지에 연결되는 링크를 리스트에 저장하여 그 리스트를 다시 반복하는 형식.
driver.execute_script << 잘 이용하면 쉬운 크롤링정도는 누구든지 금방할듯?
'Python' 카테고리의 다른 글
[Python] Multi-label & Multi-class classification에서의 loss function in pytorch (0) | 2023.12.03 |
---|---|
[Python] Multi-input model in pytorch (3) | 2023.11.27 |
[Python] TabTransformer to use Tensorflow (0) | 2023.11.19 |
[Python] Folium을 이용한 지도 시각화 (1) | 2023.10.24 |
[Python] OpenCV로 Contour 및 Color 검출 하기 (0) | 2023.09.13 |