728x90
https://deahan.tistory.com/421
여기까지 해보았다면
이번엔 여러개 상품 크롤링 하는법에 대해서 알아보자
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)
이렇게 깔끔하게 빈공백이 사라지고 나오는 것을 볼 수 있음
'Python > BeautifulSoup' 카테고리의 다른 글
[크롤링] 파이썬으로 간단하게 크롤링하기6. (데이터 엑셀에 저장) (1) | 2024.10.08 |
---|---|
[크롤링] 파이썬으로 간단하게 크롤링하기5. (여러개 페이지 크롤링 , URL 조작자) (0) | 2024.10.08 |
[크롤링] 파이썬으로 간단하게 크롤링하기3. (한개의 상품 크롤링) (0) | 2024.10.08 |
[크롤링] 파이썬으로 간단하게 크롤링하기2. (Beautifulsoup4, request라이브러리 사용법) (1) | 2024.10.07 |
[크롤링] 파이썬으로 간단하게 크롤링하기1. (환경설정) (0) | 2024.10.07 |