본문 바로가기
Python/BeautifulSoup

[크롤링] 파이썬으로 간단하게 크롤링하기4. (여러개 상품 크롤링 하는 법)

by 미눅스[멘토] 2024. 10. 8.
728x90

https://deahan.tistory.com/421

 

[크롤링] 파이썬으로 간단하게 크롤링하기3. (한개의 상품 크롤링)

https://deahan.tistory.com/419 [크롤링] 파이썬으로 간단하게 크롤링하기2. (Beautifulsoup4, request라이브러리 사용법)https://deahan.tistory.com/418 [크롤링] 파이썬으로 간단하게 크롤링하기1. (환경설정)1. 파이

deahan.tistory.com

여기까지 해보았다면

이번엔 여러개 상품 크롤링 하는법에 대해서 알아보자

 

TIP

포레스트이론 : 숲에서 원하는 나무를 선택하고 열매를 따는 과정과 매우 비슷

숲       :페이지 전체 HTML

나무   :원하는 정보를 모두 담는 태그

열매   :원하는 정보

 

<나무태그 찾는법>

1. 태그를 하나 찾는다.

2. 상위태그(부모태그)를 찾아 올라간다

3. 원하는 정보를 모두 담고 있는지 확인한다.

 

<열매 추출하는 방법>

1.숲에서 셀렉트로 나무들을 선택해줌.

ㄴ select() : 선택자에 매칭되는 태그 전체를 리스트로 반환

2.나무들을 하나씩 돌아가며 열매 추출

ㄴ for item in items: 반복문으로 나무에서 하나씩 열매 추출

 

1. 첫번째로 숲에서 원하는 정보를 모두 담고 잇는 나무를 찾는다.

2. 나무태그는 여러개가 될 수 잇다.

3. 나무태그에서 열매를 추출

import requests
from bs4 import BeautifulSoup
html = response.text
soup = BeautifulSoup(html, 'html.parser')
items = soup.select(".product")
for item in items:
    category = item.select_one(".product-category").text
    name = item.select_one(".product-name").text
    link = item.select_one(".product-name > a").attrs['href']
    price = item.select_one(".product-price").text.strip().replace(",",'').replace('원','')

    print(category, name, link,price)

이렇게 데이터를 가져 왔는데 위에 사진처럼 빨간색 박스로 빈공백이 출력 된다 

그 이유는

이렇게 데이터를 가져올때

원가도 같이 가져오기때문.... 원가는 필요 없으니 삭제해주자

price 부분을

price = item.select_one(".product-price").text.split('원')[0].replace(',','') //이렇게 바꿔주고 실행

설명은

'원' 이라는 글자 기준으로 자른후 그 배열의 '0'번째 인덱스를 가져옴

아래코드처럼 수정해주고 돌리면

import requests
from bs4 import BeautifulSoup
html = response.text
soup = BeautifulSoup(html, 'html.parser')
items = soup.select(".product")
for item in items:
    category = item.select_one(".product-category").text
    name = item.select_one(".product-name").text
    link = item.select_one(".product-name > a").attrs['href']
    price = item.select_one(".product-price").text.split('원')[0].replace(',','')

    print(category, name, link,price)

 

이렇게 깔끔하게 빈공백이 사라지고 나오는 것을 볼 수 있음