TIL-05

정진우·2021년 5월 19일
0

TIL

목록 보기
10/54
post-thumbnail

지니 뮤직 크롤링

항해99 2기 사전준비 3주차 과제를 하던 중 문제가 발생했다.

순위를 가져오기 위해 td.number에서 텍스트를 가져오는 코드를 실행시키면 td태그에 있는 "1"을 가져오면서 하위 span 태그에 있는 "1"과 상승까지 가져오는 현상이 일어났다.

for tr in trs:
    rank = tr.select_one('td.number').text
		print(rank)

위와 같은 문제를 해결하기 위해
rank2 = tr.select_one('td.number > span').text
변수를 하나 더 만들고 (rank2 - rank)를 출력해봤는데

이런 에러가 발생했고 구글링을 해보면서 방법을 찾아보던 중 split()이라는
함수를 발견했다. split() 함수는 문자열을 나누고 리스트에 넣어 주는 기능을 가졌는데 이 함수를 사용해서 해결해야 겠다는 생각을 했고 rank.split()을 출력해봤더니 아래와 같이 출력됐다.

그리고 나서 리스트의 0번째 인덱스만 출력하는 코드를 작성했고
아래와 같이 잘 출력되는 것을 확인할 수 있었다.

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


for tr in trs:
    rank = tr.select_one('td.number').text
    print(rank.split()[0])

profile
프론트엔드 개발자를 꿈꾸는

0개의 댓글