사전과제 스터디 시작
- 사전과제 팀이 어제 정해지고 오늘 첫 모임을 가졌다.
- 사실 항해99의 제일 큰 장점은 강의와 학습의 질 보다도 성장할 수 있는 환경 조성과 성취 과제를 던져주고 현업과 동일하게 문제해결능력을 기르는 것이라 생각한다.
- 그렇기에 예상보다 더 빨리 스터디가 시작되어 너무 만족스럽다.
- (사실 나는 뭔가 묶여있고 억압(억제력)받고 같이 경쟁하고 협력하는 환경이어야 집중이 더 잘된다…)
- 오늘 모임 결과 우선 내일 9시 부터 실제 항해99 진행처럼 9~21시를 하기로 했는데 내도록 계속 여유롭다 하필 약속이 있는 내일과 내일모레가 스터디 첫 날이라니 참 얄궃다…
- 그래도 내일 약속 가기전과 내일 모레 약속 이후에 최대한 들어가 있어야겠다.
노션 공유 페이지 만들기
- 모임과 더불어 사전과제 스터디 양식을 만들기로 했다.
- 근데 사실 오늘 모임에 개인적인 사정으로 두분이 참석못했는데 그분들의 기회를 뺏은 건 아닌가 괜히 걱정된다…
- 계속 모이면서 변경사항이나 문제점이 있으면 새로 다 뜯어고치면 되겠지
- 우선 스터디 목적, 웹개발종합반 커리큘럼, 출석체크, 알고리즘, 정보 등등의 목록을 만든 팀 노션 공유페이지를 만들어야겠다.
- 이번 스터디를 정말 잘 해보고 싶다
웹개발 종합반 3주차 과제 공백이슈
- 오늘은 뭔가 코드적으로 별로 한게 없는거 같은데 사실 맞다…
- 그래서 더더욱 스터디의 필요성과 중요함이 강조되지 않나 싶다
- 그래도 살짝 한게 있다면 3주차 과제의 해설되지 않은 문제를 같은 항해99멤버를 위해 설명하는 노션페이지를 만들었다는 점이다.
- 오늘은 그거라도 올려야겠다
- 저도 많이 부족하지만 한번 적어봅니다.
- 혹시 틀린 부분이나 수정해야할 사항이 있으면 슬랙으로 DM보내주세요
- 개발을 하시다보면 뜻하지 않게 원하지 않는 오류들을 많이 접하실거에요
- 많이 부족한 제가 이런 말하는게 건방질 수도 있지만 그런 오류의 순간이 개발자로서 능력을 향상시키는 순간이라고 생각합니다. (물론 엄청 오래 붙잡고 있으면 안되지만요…)
- 그 순간을 뺏고 싶지 않아서 단계별로 풀어볼 수 있는 힌트들을 적어봤어요 순서대로 해보시고 그래도 잘 안되시거나 궁금한점이 있으면 댓글이나 DM 보내주세요.
1단계
현재 문제가 되고 있는 부분을 한 번 관찰해보고 의심되는 부분을 찾아봅시다.
저 노래부분만(Peaches) 해당 문제가 생기는데 저 노래만 가지고 있는 특징이 무엇일까요
2단계
노래들 중 유일하게 19금 노래네요! 그럼 저 “19금”이 왜 문제를 일으킬까요?
3단계
우리는 bs4 크롤링을 하고 title의 경로는
#body-content > div.newest-list > div
> table > tbody > tr >td.info > a.title.ellipsis
인데 저 19금 노래가 span으로 하나 더 있고
그로인해 19금이라는 텍스트가 따로 하나 더 들어가
선행과 후행 문자가 제거된 문자열의 복사본을 돌려주는 ********strip()이 정상적으로 작동하지 않았군요
(기존 다른 노래들의 html 형식)
(문제가 되는 Peaches의 html 형식)
(strip() 관련 설명 링크 https://wikidocs.net/33017)
4단계
그럼 앞으로 다른 날짜의 순위를 크롤링할때도 19금 노래가 있다면 같은 문제가 반복될 수 있다는 것을 알 수 있습니다.
해결방법은 저 19금 텍스트를 지워 strip()이 정상 작동하도록 하면 좋을 것 같습니다.
- 그럴려면 문자열내에서 특정 문자열을 제거하는 메서드가 뭔지 알아내어
- “19금”이라는 텍스트가 있는 title이라는 조건이 있을때는
- 그 조건내에서 새롭게 print하고 기존의 print 코드실행은 건너뛰고 다음 반복코드를 실행하면 좋겠네요
코드
- 정답이 아니고 그냥 제가 생각한 코드입니다.
- 코드의 의미적으로나 기능적으로 더 좋은 코드가 있을 수 있어요…
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:
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
if ("19금" in title):
print(rank, title.replace("19금", "").strip(), artist)
continue
print(rank, title, artist)
'항해99' 카테고리의 다른 글
[항해99] TIL 사전과제 스터디 D-35 (0) | 2022.06.06 |
---|---|
[항해99] TIL 사전과제 스터디 D-36 (0) | 2022.06.05 |
[항해99] TIL 웹개발 종합반 5주차 D-38 (0) | 2022.06.03 |
[항해99] TIL 웹개발 종합반 4주차 D-39 (0) | 2022.06.02 |
[항해99] TIL 웹개발 종합반 3주차 D-40 (0) | 2022.06.02 |