기록방
파이썬 웹 크롤링 교재 #3 본문
"한입에 웹 크롤링 프알못의 파이썬 데이터 수집 자동화 한 방에 끝내기"
7장 쇼핑몰 크롤링
대상 사이트 https://jolse.com/ 라는 화장품 쇼핑몰[SKINCARE → Moisturizers → Toners & Mists] : https://jolse.com/category/toners-mists/1019/아래쪽에 페이지 넘길 수 있음 (1~10)
해당 쇼핑몰사이트가 크롤링 접근을 막아놨음. 무신사로 대체 : 무신사 데닝 펜츠 https://www.musinsa.com/categories/item/003002
import requests
from bs4 import BeautifulSoup
url = "<https://www.musinsa.com/categories/item/003002>"
result = requests.get(url)
bs_obj = BeautifulSoup(result.content, "html.parser")
li_box = bs_obj.find("div", {"class","list-box box"})
article_info = li_box.findAll("div", {"class","article_info"})
def get_goods_info(ai):
a_tag = ai.find("p", {"class","list_info"}).find("a")
title = a_tag['title']
link = a_tag['href'][2:]
p_tag = ai.find("p", {"class","price"}).text.replace(" ", "").split("\\n")[2]
return {"title":title, "link":link, "price" : p_tag}
for ai in article_info:
print(get_goods_info(ai))
# 결과 #
# {'title': '와이드 데님 팬츠 (LIGHT BLUE)', 'link': 'www.musinsa.com/app/goods/858911', 'price': '39,000원'}
# {'title': '와이드 데님 팬츠 (DEEP GREY)', 'link': 'www.musinsa.com/app/goods/890338', 'price': '39,000원'}
# 생략
# {'title': '[CONA 9307] 가을용 커버밴드 이염없는 생지 와이드...', 'link': 'www.musinsa.com/app/goods/2063135', 'price': '44,850원'}
# {'title': 'Bluish Light / New Stan', 'link': 'www.musinsa.com/app/goods/1764739', 'price': '73,600원'}
# {'title': '모어 와이드 데님 팬츠 (BLEACH)', 'link': 'www.musinsa.com/app/goods/1778523', 'price': '39,000원'}
# {'title': '스티즈 051B 블랙 로우', 'link': 'www.musinsa.com/app/goods/2675764', 'price': '119,200원'}
# {'title': '[테이퍼드핏]CHARMING BLUE CHIP', 'link': 'www.musinsa.com/app/goods/1246217', 'price': '45,000원'}
# {'title': '테이퍼드 크롭 데님 팬츠 [워시드 블랙]', 'link': 'www.musinsa.com/app/goods/2007389', 'price': '42,290원'}
페이지 넘기며 가져오기
- 무신사 데닝 펜츠 1~100페이지 크롤링
- requst.get으로 반복하다 사이트에서 가끔 차단하기 시작함
- 딕셔너리를 텍스트 파일로 저장
import urllib.request
from bs4 import BeautifulSoup
# import time
file = open("musinsa 데닝펜츠 100페이지.txt", "w")
header = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36'}
url = "<https://www.musinsa.com/categories/item/003002?d_cat_cd=003002&brand=&list_kind=small&sort=pop_category&sub_sort=&page=1&display_cnt=90&group_sale=&exclusive_yn=&sale_goods=×ale_yn=&ex_soldout=&kids=&color=&price1=&price2=&shoeSizeOption=&tags=&campaign_id=&includeKeywords=&measure=>"
for i in range(2,102):
# time.sleep(2)
req = urllib.request.Request(url =url, headers=header)
url_open = urllib.request.urlopen(req)
bs_obj = BeautifulSoup(url_open, "html.parser")
# if len(str(bs_obj)) < 500:
# print(bs_obj)
# print("================================================\\n 접속 실패 \\n================================================\\n")
# continue
li_box = bs_obj.find("div", {"class", "list-box box"})
article_info = li_box.findAll("div", {"class", "article_info"})
def get_goods_info(ai):
a_tag = ai.find("p", {"class", "list_info"}).find("a")
title = a_tag['title']
link = a_tag['href'][2:]
p_tag = ai.find("p", {"class", "price"}).text.replace(" ", "").split("\\n")[2]
return {"title": title, "link": link, "price": p_tag}
slid = "\\n================================================\\n " + (str(i-1)) + " 페이지 끝\\n================================================\\n"
for ai in article_info:
text = str(get_goods_info(ai))
# print(text)
file.write(text + " ")
print(slid)
file.write(slid)
start_idx = 119
end_idx = start_idx + len(str(i-1))
url = url[:start_idx] + str(i) + url[end_idx:]
# print("\\n"+url+"\\n")
file.close()
print("잘 완료 됨")
# 결과 #
# ================================================
# 1 페이지 끝
# ================================================
#
#
# ================================================
# 2 페이지 끝
# ================================================
#
# 생략
#
# ================================================
# 99 페이지 끝
# ================================================
#
#
# ================================================
# 100 페이지 끝
# ================================================
#
# 잘 완료 됨
프로젝트를 진행하기 위한 웹 크롤링 공부였는데, 필요한 지식은 다 배웠고 연습도 충분하니 교재는 여기까지 진행한다.
728x90
'웹 크롤링' 카테고리의 다른 글
백준 문제 등급 별 목록 가져오기 (0) | 2022.10.13 |
---|---|
백준 문제 크로스체크 프로그램 (0) | 2022.10.01 |
파이썬 웹 크롤링 교재 #2 (0) | 2022.09.21 |
파이썬 웹 크롤링 교재 #1 (0) | 2022.09.21 |