Wii Pointer #1 Tilt Normal
본문 바로가기
📘 𝐭𝐢𝐥/주간회고

[스파르타 코딩클럽]_웹개발 종합반 3주차(1)_3주차 첫 마무리

by 개발자_후니 2022. 12. 22.
728x90
반응형
[수업 목표]

1. 파이썬 기초 문법을 안다.
2. 원하는 페이지를 크롤링 할 수 있다.
3. pymongo를 통해 mongoDB를 제어할 수 있다.

 

긴말하지 않겠다.

 

여태까지 배웠던 함수 또는 코드들의 축제였다.

 

1 주차, 2 주차가 아직 완벽하지 않았던 나에게는 확실히 더딘 여정이었고, 여러번 돌려봐야 이해가 되는 내용들이었다.

 

3 주차가 되니 더욱 더 확연하게 느낄 수 있었다.

 

HTML은 뼈대다.

 

그렇다.

 

뼈대가 허술하니, 쌓아올려도 금방 무너지기 마련

 

우선 제출한 숙제부터 보여주겠다.

 

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

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

for song in songs:
    name = song.select_one('td.info > a.title.ellipsis').text.strip()
    rank = song.select_one('td.number').text[0:2].strip()
    singer = song.select_one('td.info > a.artist.ellipsis').text
    print(rank, name, singer)

# 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(1) > td.info > a.title.ellipsis
# body-content > div.newest-list > div > table > tbody > tr:nth-child(1) > td.info > a.artist.ellipsis

 

완성된 코드다 이렇게 코드를 넣은 결과값은 

 

 

이런식으로 산출되었다.

 

생각해보면 간단하다. ( 생각만으로는 안 되는건 없다. )

 

data = requests.get('https://www.genie.co.kr/chart/top200?ditc=M&rtm=N&ymd=20210701', headers=headers)

 

이 구문에서 알 수 있듯이 해당 주소에서 정보를 요청하는 과정이다.

 

 

색깔에서 보듯이 그대로 내려오는 나열과도 같다.

 

1. 뷰티풀 숲으로 요청한 데이터를 데이터화한게 SOUP

 

2. SOUP 숲이라는 데이터에서 곡마다 정보를 나눈 그룹을 SONGS

 

3. SONGS 라는 그룹에서 정보의 특정값마다 나눠놓은것이 [ name, rank, singer ]였다.

 

한가지만 잘못 가져와도 오류가 뜨는 바람에 30분넘게 소요된 것 같다.

 

 

마지막 여기에  #을 기입하는것도 꼭 잊지말자...

728x90
반응형