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)
이 구문에서 알 수 있듯이 해당 주소에서 정보를 요청하는 과정이다.
![](https://blog.kakaocdn.net/dn/cN2X00/btrUeXwkDzG/JsWJTOmnUelKr2llIo5450/img.png)
색깔에서 보듯이 그대로 내려오는 나열과도 같다.
1. 뷰티풀 숲으로 요청한 데이터를 데이터화한게 SOUP
2. SOUP 숲이라는 데이터에서 곡마다 정보를 나눈 그룹을 SONGS
3. SONGS 라는 그룹에서 정보의 특정값마다 나눠놓은것이 [ name, rank, singer ]였다.
한가지만 잘못 가져와도 오류가 뜨는 바람에 30분넘게 소요된 것 같다.
![](https://blog.kakaocdn.net/dn/dKDg0F/btrUh0SoBwv/nMfSbTRoCIAYLA8dchijk0/img.png)
마지막 여기에 #을 기입하는것도 꼭 잊지말자...
728x90
반응형
'📘 𝐭𝐢𝐥 > 주간회고' 카테고리의 다른 글
[23.01.15][스파르타 코딩클럽]_ 6주차_ OT주차 (4) | 2023.01.15 |
---|---|
[스파르타 코딩클럽]_웹개발 종합반 5주차 마무리 그리고 OT (2) | 2023.01.09 |
[스파르타 코딩클럽]_웹개발 종합반 4주차 마무리 (2) | 2023.01.01 |
[스파르타 코딩클럽]_웹개발 종합반 2주차(1)_2주차를 처음으로 완강하며... (0) | 2022.12.20 |
[스파르타 코딩클럽]_웹개발 종합반 1주차(1)_나의 첫 개발일지 (0) | 2022.12.14 |