저번에 마지막으로 이렇게 하면 왜 힘든지 잠깐 언급한걸 살펴본다.(짧다)
books = soup.find_all("div",{"class":"ss_book_box"})
for book in books:
# price = book.find_all("a", {"class":"bo_used"}).find_all 판매분류와 가격이 한번에 뽑힌다.
price = book.select("table > tr > td")[2].select("table.usedtable01 > tr ")[1]
>>> <tr>
<td><a class="bo_used" href="https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=193931483"><b>16,200원</b></a></td><td><a class="bo_used" href="https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=277382846"><b> 14,400원</b></a></td><td><a class="bo_used" href="/shop/UsedShop/wuseditemall.aspx?ItemId=193931483&TabType=2"><b>11,400원</b></a></td><td><a class="bo_used" href="/shop/UsedShop/wuseditemall.aspx?ItemId=193931483&TabType=3"><b>12,000원</b></a></td><td><a class="bo_used" href="/shop/UsedShop/wuseditemall.aspx?ItemId=193931483&TabType=1"><b>13,000원</b></a></td></tr>
이때에 <td>....16200원..</td><td>....14400원...</td><td>....11400원...</td><td>.....
뭐가 문제점인지 보이는가?
바로 다시 bs4.element요소로 나온다. 그래서 다시
price = book.select("table > tr > td")[2].select("table.usedtable01 > tr ")[1].select("td")
뒤에 select("td")로 써줘야 한다.
이러면 아까와 똑같은 결과를 얻는다.
# 첫번째로 설명한, 좀더 짧은식
price = book.select("table > tr > td")[2].select("table.usedtable01 > tr > td")
# 두번째로 설명한, 중간 선택자로 리스트를 뽑고 인덱싱한 후, 다시 셀렉트를 해준 식
price = book.select("table > tr > td")[2].select("table.usedtable01 > tr ")[1].select("td")
>>> [<td><a class="bo_used" href="https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=193931483"><b>16,200원</b></a></td>, <td><a class="bo_used" href="https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=277382846"><b> 14,400원</b></a></td>, <td><a class="bo_used" href="/shop/UsedShop/wuseditemall.aspx?ItemId=193931483&TabType=2"><b>11,400원</b></a></td>, <td><a class="bo_used" href="/shop/UsedShop/wuseditemall.aspx?ItemId=193931483&TabType=3"><b>12,000원</b></a></td>, <td><a class="bo_used" href="/shop/UsedShop/wuseditemall.aspx?ItemId=193931483&TabType=1"><b>13,000원</b></a></td>]
이러면 인덱싱으로 가격만 뽑을 수 있다.
비어있는 가격 상관없이 5개씩 뽑아올 수 있다.
'파이썬 공부 > 기초' 카테고리의 다른 글
파이썬 이중콜론 :: 의미 (0) | 2022.06.02 |
---|---|
The current PyTorch install supports CUDA capabilities sm_37 sm_50 sm_60 sm_61 sm_70 sm_75 compute_37 에러 (0) | 2022.03.01 |
[python] 알라딘 중고서점 스크래핑-2 (0) | 2021.12.21 |
알라딘 중고서점 가격 스크래핑(파이썬) (0) | 2021.12.21 |
리스트 옮기기(파이썬) (0) | 2021.01.20 |