커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
크롤링 과제에서요 ㅠㅠㅠㅠ
undefined주차
북마크
유*지
댓글
11
추천
0
조회수
21
조회수
21
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


계속 고민해봐도 답이 안나와서 답안을 봐봤는데, 이해가 가질 않아서 질문드립니다ㅠㅠ


질문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 % 

취소
 공유
취소
댓글 0
댓글 알림
나의얼굴