python 웹 스크래핑 3주차 숙제(스파르타 코딩)

2022. 12. 11. 20:28python

웹 스크래핑 3주 차 숙제를 하였습니다. 

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')

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



for music in musics:
    rank = music.select_one('td.number').text[0:2].strip()
    title = music.select_one('td.info > a.title.ellipsis').text.strip()
    name = music.select_one('td.info > a.artist.ellipsis').text
    nineteen = "19금"

    if title[0:3] == nineteen:
        print(rank,title[0:3],title[3:].strip(), name)

    else:
        print(rank, title, name)

이렇게 완성 하였습니다. 

그리고 이화면이 코드를 실행하면 나오는 부분입니다. 틀도 다 가르쳐주고 힌트도 있어서 어렵지 않게 숙제를 풀이할 수 있었지만 저에겐 신경 쓰이는 부분이 있었습니다.

바로 이 공백.. 19금<span>과 peaches (Feat. Daniel Caesar & Giveon)<a>라는 노래 제목 사이의 공백!! 없애고 싶다..

1시간 넘게 사투를 벌인 끝에 결국 찾은 코드는.. 

nineteen = "19금"

if title[0:3] == nineteen:
    print(rank,title[0:3],title[3:].strip(), name)

else:
    print(rank, title, name)

바로 이것 입니다.. title[0:3]으로 19금이라는 글자를 찾고 맞으면 

title[0:3]으로 "19금"찍고 따로 title[3:0] 19금 뒤에 노래 제목을 strip()으로 공백을 없애는 것입니다. 

이렇게 저렇게 해봤지만 이 코드가 결국 제가 원하는 대로 실행되었습니다.

아.. 편한.. 

 

더 좋은 방법이 있겠죠...