잡동사니 블로그
[Python] 심심해서 만든 무신사 추천상품 크롤링 본문
백엔드 친구놈이 DB 연습 한다고 무신사 상품 정보를 일일히 가져오고 있길래 하나 만듬.
대충 라이브러리 설치법은
[Python] Selenium과 bs4를 이용한 크롤링 + Pyautogui
크롤링 기본 구조 1. Selenium을 사용하여 소스코드로 지정된 WebDriver를 실행하여 웹 페이지에 접속한다. 2. 접속한 웹 페이지를 HTML 소스코드 형태로 파싱한다. 3. 파싱된 HTML 전체 코드에서 Beautiful S
eupppo.tistory.com
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 |