Q. 지니뮤직의 1~50위 곡을 스크래핑 해보세요.
1. 순위, 제목, 아티스트 스크래핑(가져오기)
1) 순위 스크래핑
- 순위(1위) 우클릭 후 검사 들어가기
- 검사 -> copy selector
- genie.py에 카피한 거 복붙
- 2위도 똑같이 우클릭 후 copy selector
- 1,2위 파이썬에 복붙하기
- 드래그 한 부분들이 같음
- 같은, 중복되는 부분들을 복사해서 trs(이름 임의로 정한 것이므로 다른 것으로 해도 됨)에 soup.select() 하기
#body-content > div.newest-list > div > table > tbody > tr:nth-child(1) > td.number
#body-content > div.newest-list > div > table > tbody > tr:nth-child(2) > td.number
trs = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
- #body-content부터 지우고,
- for문으로 돌리기
trs = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
for tr in trs:
rank = tr.select_one('td.number')
print(rank)
- 그냥 print(rank)를 누르면 결과값이 이렇게 복잡하게 나온다.
- 하지만 랭크를 텍스트로 출력하라는 의미로 rank.text 출력하면 이런 식으로 나온다.
- 0부터 2까지 끊어라는 의미
print(rank.text[0:2])
- rank.text 0부터 2까지 끊어라고 하면 숫자만 출력된다.
- strip()은 양쪽 여백 다 없애버려라 라는 의미
print(rank.text[0:2].strip())
2) 제목 스크래핑
- 위의 순위와 똑같이 제목도 지니에서 우클릭 후 검사 -> 복사 후 프로젝트에 복붙하기
- #body ~ tr 까지 똑같다.
- #body ~ tr 를 제외한 뒷부분을 타이틀 셀렉트에 붙여준다.
- text.strip() - 텍스트로 바꿔주고 공백을 없애는 strip()을 사용하기
3) 아티스트 스크래핑
- 위의 순위, 제목과 똑같이 제목도 지니에서 우클릭 후 검사 -> 복사 후 프로젝트에 복붙하기
- 이것도 복사 후 뒷부분만 가져오면 된다.
- 출력하면 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.info > a.title.ellipsis').text.strip()
artist = tr.select_one('td.info > a.artist.ellipsis').text
print(rank, title, artist)
'개발일지' 카테고리의 다른 글
[프론트엔드 지식] SPA vs MPA의 차이 (0) | 2022.11.16 |
---|---|
본격 API만들기 (0) | 2022.11.10 |
[왕초보] 비개발자를 위한, 웹개발 종합반 (프로그래밍 실무, 풀스택) 2주차 - 일기 2주차를 마치며 (0) | 2022.10.22 |
[왕초보] 비개발자를 위한, 웹개발 종합반 (프로그래밍 실무, 풀스택) 1주차 - 일기 1주차를 마치며.. (0) | 2022.10.20 |
[왕초보] 비개발자를 위한, 웹개발 종합반 (프로그래밍 실무, 풀스택) 1주차 - 일기1 (0) | 2022.10.19 |