
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
계속 고민해봐도 답이 안나와서 답안을 봐봤는데, 이해가 가질 않아서 질문드립니다ㅠㅠ
질문1.
copy selector 해서 list = soup.select('#body-content > div.newest-list > div > table > tbody')
이런식으로 가져오잖아요? 근데 왜 답안에는 > tbody 까지가 아니라, 한번 더 들어가서 > tbody > tr 인거에요??
tbody라는 태그 안에 모든것들을 불러와야 순위권 내의 모든 곡들의 데이터들을 반복해서 가져올 수 있는것 아닌가요??
tr 태그 안에서 불러오면 한가지 곡의 데이터만 불러오는게 아니에요?? 그 경계를 어떻게 알수 있나요??
반복해서 불러오고 싶은 데이터들의 바로 위에 상위 태그까지만 지정하는게 아니라
반복해서 불러오고 싶은 데이터들 각각의 동일한 태그까지인가요????@0@
질문2.
크롤링을 위해 for 반복문을 이용할때,
for li in list:
rank = li.select_one('.해당 변수에 넣고싶은 데이터의 명찰 이름')
으로 알고있는데요, 답안을 보니깐 그게 아니라서,,,,, 이건 뭐에요...???
괄호 안에 점이 나오는게 아니라 왜 태그부터 나와요????
질문3
질문 2와 연결되어 있는데요, 답안을 보니
title = tr.select_one('td.info > a.title.ellipsis').text.strip()
이렇게 나와있더라구요! 그런데 td.info 다음에 > 이거는 왜 이렇게 와요???
더 깊이 타고 들어가는게 . 으로 표현이 된다면 왜 a태그는 .으로 들어가지 않고 > 라는 기호를 사용해서 들어가는 거에요????
질문4
질문2 와 마찬가지로 연결이 되어있는데요, a.title.ellipsis 이부분이용!!
멜론 페이지 검사하기 창에는 class="title ellipsis" 라고 쓰여있는데, 왜 답안에는 타고 들어가는 기호였던 . 을 사용해서
title.ellipsis 라고 적는건가요..........????????
ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ 도와주세유ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ

import requests
from bs4 import BeautifulSoup
URL = "https://www.genie.co.kr/chart/top200?ditc=M&rtm=N&ymd=20230101"
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get(URL, headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
list = soup.select('#body-content > div.newest-list > div > table > tbody')
for li in list:
rank = li.select_one(".number")
title = li.select_one(".check")
print(rank, title)
터미널 창
(venv) ej@yueunjiui-MacBook-Pro pythonprac % /Users/ej/Desktop/sparta/pyth
onprac/venv/bin/python /Users/ej/Desktop/sparta/pythonprac/homework.py
<td class="number">1
<span class="rank">
<span class="rank"><span class="rank-up">7<span class="hide">상승</span></span></span>
</span>
</td> <td class="check"><input class="select-check" title="Ditto" type="checkbox"/></td>
(venv) ej@yueunjiui-MacBook-Pro pythonprac %
