커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
[과제 질문]'.text'가 자식 태그의 text까지 가져옵니다.
undefined주차
북마크
최*수
댓글
5
추천
0
조회수
8
조회수
8
답변 완료

안녕하세요. 3주차 HW에서 답안 코드와 동일하게 작성할 시, 15위 Peaches (Feat. Daniel Caesar & Giveon)의 출력이 정답과 일치하지 않습니다. 왜 그런지 찾아보니 제목이 있는 태그 바로 아래에 <span>태그가 하나 더 있고 거기에 "19"라는 내용의 텍스트가 존재하여 그 태그 안의 텍스트 까지 함께 가져와서 그런것 같습니다.

이를 해결하기 위해 제목이 있는 다른 위치인 #body-content > div.newest-list > div > table > tbody > tr:nth-child(...) > td.check > input 를 참조하였지만 답안 코드와 동일한 위치를 참조하는 경우 어떻게 하면 하위 태그의 텍스트를 제외하고 자기 자신만의 텍스트를 가져오게 할 수 있는지 궁금합니다.

스파르타 즉문즉답






작성한 코드 및 에러 메세지

답안과 동일한 코드(정답과 불일치):

import requests
from bs4 import BeautifulSoup

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('https://www.genie.co.kr/chart/top200?ditc=M&rtm=N&ymd=20210701',headers=headers)

soup = BeautifulSoup(data.text, 'html.parser')

trs = soup.select('#body-content > div.newest-list > div > table > tbody > tr')

for tr in trs:
    title = tr.select_one('td.info > a.title.ellipsis').text.strip()
    rank = tr.select_one('td.number').text[0:2].strip()
    artist = tr.select_one('td.info > a.artist.ellipsis').text
    print(rank, title, artist)


새로 작성한 코드(출력 형태는 정답과 일치):

import requests
from bs4 import BeautifulSoup

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('https://www.genie.co.kr/chart/top200?ditc=M&rtm=N&ymd=20210701',headers=headers)
soup=BeautifulSoup(data.text, 'html.parser')
trs= soup.select('#body-content > div.newest-list > div > table > tbody > tr')
for tr in trs:
    rank= tr.select_one('td.number').text[0:2].strip()
    title=tr.select_one('td.check > input')['title'].strip()
    artist=tr.select_one('td.info > a.artist.ellipsis').text.strip()
    print(rank, title, artist)
취소
 공유
취소
댓글 0
댓글 알림
나의얼굴