https://www.genie.co.kr/chart/top200?ditc=D&ymd=20200403&hh=23&rtm=N&pg=1
- 힌트: 순위와 곡제목이 깔끔하게 나오지 않을 때(EX) 옆에 여백이 있다던가, 다른 글씨도 나온다던가...), 파이썬 내장 함수인
scrip()
사용하기
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=D&ymd=20200403&hh=23&rtm=N&pg=1',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
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)
- 태그 안의 텍스트를 찍고 싶을 땐 →
태그.text
- 태그 안의 속성을 찍고 싶을 땐 →
태그.['속성']
.strip()
은 '문자열' 또는 '공백'을 제거해준다.
<'문자열 인덱싱(슬라이싱)'>
- 파이썬에서는 ‘슬라이싱(slice)’이라는 기능을 제공하는데, 다음과 같이 가져오고 싶은 문자열의 범위를 지정하면 된다.
- 위 코드를 보면
[0:2]
라는 표현을 사용했다.[ ]
는 슬라이싱할 범위를 지정할 때 사용하는 기호이다.0
은 시작 위치를,2
는 끝 위치를 의미한다.- 시작과 끝을 구분하기 위해 그 사이에 콜론(
:
)을 사용한다.
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=D&ymd=20200403&hh=23&rtm=N&pg=1',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)