문제점
bs4로 곡순위 웹페이지를 파싱했고, 아래 코드로 <tr> 들이 모인 리스트를 도출해 내었다. 하나의 <tr>에는 50위권 안에 들어온 노래의 정보가 담겨 있다.
trs = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
나는 그이후 또다시 아래 코드로 trs 라는 리스트로부터 노래제목을 도출해 내려고 하였다.
title = trs.select_one('td.info > a.title.ellipsis').text.strip();
하지만 그건 불가능했다.
시도해본 것
그래서 잘 작동하는 비슷한 코드를 살펴보았다. 결론은 list 로부터 노래제목을 도출하려면 반복문 안에 넣어서 하나하나 접근해야 한다는 것이었다. 아래 코드처럼 만들면 리스트 통째가 아닌 요소 하나하나에 접근하게 되므로 제목을 도출해 낼 수 있다.
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()
singer = tr.select_one('td.info > a.artist.ellipsis').text
print(rank, title, singer);
'항해99' 카테고리의 다른 글
깃헙에서 같은 파일을 여러명이 작업하니 에러가 뜬다. (0) | 2023.03.30 |
---|---|
깃헙은 collaborators 추가, 몽고디비는 프로젝트로 invite (0) | 2023.03.30 |
부트캠프 새시작. 첫 프로젝트. (0) | 2023.03.27 |
aws Elastic Beanstalk 배포 종료후 다시 배포하기 (0) | 2023.03.25 |
특정 url 웹을 bs4로 크롤링하고 그것을 몽고디비에 저장하기 (0) | 2023.03.23 |