250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- __annotations__
- MySQL
- remove()
- 오버라이딩
- __len__
- mro()
- decode()
- shuffle()
- locals()
- choice()
- shutil
- JS
- fileinput
- CSS
- 파이썬
- __getitem__
- count()
- inplace()
- items()
- MySqlDB
- glob
- View
- discard()
- randrange()
- HTML
- __sub__
- fnmatch
- zipfile
- node.js
- Database
Archives
- Today
- Total
흰둥이는 코드를 짤 때 짖어 (왈!왈!왈!왈!왈!왈!왈!왈!왈!왈!왈!)
(Python, 과제) 크롤링 과제1 본문
728x90
반응형
크롤링 과제
- 지니 차트 200위까지 크롤링
- 반복문을 사용하여 크롤링
- 수집한 데이터를 데이터프레임으로 저장
- 엑셀로 출력
- 과제는 github로 내보내기
In [ ]:
import requests
from bs4 import BeautifulSoup
import pandas as pd
In [ ]:
header = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'}
rank = 0
chart = []
for i in range(1, 5):
site = f'https://www.genie.co.kr/chart/top200?ditc=D&ymd=20230601&hh=14&rtm=Y&pg={i}'
request = requests.get(site, headers = header)
soup = BeautifulSoup(request.text)
info = soup.findAll('td', {'class':'info'})
titles = [item.find('a', class_='title') for item in info]
artists = [item.find('a', class_='artist') for item in info]
for t, a in zip(titles, artists):
rank += 1
title = t.text.strip()
artist = a.text.strip()
dic = {'순위': f'{rank}위', '제목':title, '가수':artist}
chart.append(dic)
chart
Out[ ]:
[{'순위': '1위', '제목': '퀸카 (Queencard)', '가수': '(여자)아이들'},
{'순위': '2위', '제목': 'I AM', '가수': 'IVE (아이브)'},
{'순위': '3위', '제목': 'Spicy', '가수': 'aespa'},
{'순위': '4위', '제목': 'Kitsch', '가수': 'IVE (아이브)'},
{'순위': '5위',
'제목': 'UNFORGIVEN (Feat. Nile Rodgers)',
'가수': 'LE SSERAFIM (르세라핌)'},
{'순위': '6위', '제목': '꽃', '가수': '지수 (JISOO)'},
{'순위': '7위', '제목': 'Hype boy', '가수': 'NewJeans'},
{'순위': '8위', '제목': 'Ditto', '가수': 'NewJeans'},
{'순위': '9위', '제목': '손오공', '가수': '세븐틴 (SEVENTEEN)'},
{'순위': '10위', '제목': '사건의 지평선', '가수': '윤하 (YOUNHA)'},
{'순위': '11위', '제목': '사랑은 늘 도망가', '가수': '임영웅'},
{'순위': '12위', '제목': 'Cupid', '가수': 'FIFTY FIFTY'},
{'순위': '13위', '제목': '심 (心)', '가수': 'DK (디셈버)'},
{'순위': '14위', '제목': "I Don't Think That I Like Her", '가수': 'Charlie Puth'},
{'순위': '15위', '제목': 'Teddy Bear', '가수': 'STAYC (스테이씨)'},
{'순위': '16위', '제목': '우리들의 블루스', '가수': '임영웅'},
{'순위': '17위', '제목': 'After LIKE', '가수': 'IVE (아이브)'},
{'순위': '18위', '제목': '파이팅 해야지 (Feat. 이영지)', '가수': '부석순 (SEVENTEEN)'},
{'순위': '19위', '제목': 'London Boy', '가수': '임영웅'},
{'순위': '20위', '제목': '이제 나만 믿어요', '가수': '임영웅'},
{'순위': '21위', '제목': '다시 만날 수 있을까', '가수': '임영웅'},
{'순위': '22위', '제목': 'OMG', '가수': 'NewJeans'},
{'순위': '23위', '제목': 'Dangerously', '가수': 'Charlie Puth'},
{'순위': '24위', '제목': 'Polaroid', '가수': '임영웅'},
{'순위': '25위', '제목': '무지개', '가수': '임영웅'},
{'순위': '26위', '제목': 'LOVE DIVE', '가수': 'IVE (아이브)'},
{'순위': '27위', '제목': 'CHRISTIAN', '가수': 'Zior Park'},
{'순위': '28위', '제목': 'Attention', '가수': 'NewJeans'},
{'순위': '29위', '제목': '헤어지자 말해요', '가수': '박재정'},
{'순위': '30위', '제목': '아버지', '가수': '임영웅'},
{'순위': '31위', '제목': '이브, 프시케 그리고 푸른 수염의 아내', '가수': 'LE SSERAFIM (르세라핌)'},
{'순위': '32위', '제목': 'A bientot', '가수': '임영웅'},
{'순위': '33위', '제목': '사랑해 진짜', '가수': '임영웅'},
{'순위': '34위', '제목': 'ANTIFRAGILE', '가수': 'LE SSERAFIM (르세라핌)'},
{'순위': '35위', '제목': '손이 참 곱던 그대', '가수': '임영웅'},
{'순위': '36위', '제목': '연애편지', '가수': '임영웅'},
{'순위': '37위', '제목': '건물 사이에 피어난 장미', '가수': 'H1-KEY (하이키)'},
{'순위': '38위', '제목': '인생찬가', '가수': '임영웅'},
{'순위': '39위', '제목': '보금자리', '가수': '임영웅'},
{'순위': '40위', '제목': '물론', '가수': '허각'},
{'순위': '41위', '제목': 'Heaven (2023)', '가수': '임재현'},
{'순위': '42위', '제목': '사랑인가 봐', '가수': '멜로망스 (MeloMance)'},
{'순위': '43위', '제목': 'NIGHT DANCER', '가수': 'imase'},
{'순위': '44위', '제목': '취중고백', '가수': '김민석 (멜로망스)'},
{'순위': '45위', '제목': "That's Hilarious", '가수': 'Charlie Puth'},
{'순위': '46위', '제목': '해요 (2022)', '가수': '#안녕'},
{'순위': '47위', '제목': 'TOMBOY', '가수': '(여자)아이들'},
{'순위': '48위', '제목': '그때 그 순간 그대로 (그그그)', '가수': 'WSG워너비 (가야G)'},
{'순위': '49위', '제목': '빛이 나는 너에게', '가수': '던 (DAWN)'},
{'순위': '50위', '제목': 'The Drum', '가수': 'Alan Walker'},
{'순위': '51위', '제목': 'Nxde', '가수': '(여자)아이들'},
{'순위': '52위', '제목': 'KNOCK', '가수': '이채연'},
{'순위': '53위', '제목': '그라데이션', '가수': '10CM'},
{'순위': '54위', '제목': '다정히 내 이름을 부르면', '가수': '경서예지 & 전건호'},
{'순위': '55위', '제목': 'Stay', '가수': 'The Kid LAROI & Justin Bieber'},
{'순위': '56위', '제목': 'Shut Down', '가수': 'BLACKPINK'},
{'순위': '57위', '제목': 'Pink Venom', '가수': 'BLACKPINK'},
{'순위': '58위', '제목': 'Monologue', '가수': '테이 (Tei)'},
{'순위': '59위', '제목': 'FEARLESS', '가수': 'LE SSERAFIM (르세라핌)'},
{'순위': '60위', '제목': '너의 모든 순간', '가수': '성시경'},
{'순위': '61위', '제목': '사랑..그게 뭔데', '가수': '지아 (Zia)'},
{'순위': '62위', '제목': '나의 바람 (Wind And Wish)', '가수': '비투비'},
{'순위': '63위', '제목': 'When I Get Old', '가수': 'Christopher & 청하'},
{'순위': '64위', '제목': '찬란한 하루', '가수': '멜로망스 (MeloMance)'},
{'순위': '65위', '제목': '새삥 (Prod. by ZICO) (Feat. 호미들)', '가수': '지코 (ZICO)'},
{'순위': '66위', '제목': '사랑하기 싫어', '가수': '지아 (Zia)'},
{'순위': '67위', '제목': 'Dynamite', '가수': '방탄소년단'},
{'순위': '68위', '제목': '나의 X에게', '가수': '경서'},
{'순위': '69위', '제목': 'Allergy', '가수': '(여자)아이들'},
{'순위': '70위', '제목': 'VIBE (Feat. Jimin of BTS)', '가수': '태양'},
{'순위': '71위', '제목': 'ELEVEN', '가수': 'IVE (아이브)'},
{'순위': '72위', '제목': '오르트구름', '가수': '윤하 (YOUNHA)'},
{'순위': '73위', '제목': 'Loving You Girl (Feat. Hkeem)', '가수': 'Peder Elias'},
{'순위': '74위', '제목': '내가 아니라도', '가수': '주호'},
{'순위': '75위',
'제목': 'Dreamers (Music from the FIFA World Cup Qatar 2022 Official Soundtrack) (Feat. FIFA Sound)',
'가수': '정국 & 방탄소년단'},
{'순위': '76위', '제목': '2002', '가수': 'Anne-Marie'},
{'순위': '77위', '제목': 'Thirsty', '가수': 'aespa'},
{'순위': '78위', '제목': '보고싶었어', '가수': 'WSG워너비 (4FIRE)'},
{'순위': '79위', '제목': '주저하는 연인들을 위해', '가수': '잔나비'},
{'순위': '80위', '제목': 'Butter', '가수': '방탄소년단'},
{'순위': '81위', '제목': '정이라고 하자 (Feat. 10CM)', '가수': 'BIG Naughty (서동현)'},
{'순위': '82위', '제목': '봄날', '가수': '방탄소년단'},
{'순위': '83위', '제목': '잠깐 시간 될까', '가수': '이무진'},
{'순위': '84위', '제목': '모든 날, 모든 순간 (Every day, Every Moment)', '가수': '폴킴'},
{'순위': '85위', '제목': '신호등', '가수': '이무진'},
{'순위': '86위', '제목': '라일락', '가수': '아이유 (IU)'},
{'순위': '87위', '제목': '첫 키스에 내 심장은 120BPM', '가수': '경서'},
{'순위': '88위', '제목': 'Cookie', '가수': 'NewJeans'},
{'순위': '89위', '제목': '희재', '가수': '성시경'},
{'순위': '90위', '제목': 'Off My Face', '가수': 'Justin Bieber'},
{'순위': '91위', '제목': 'Unholy', '가수': 'Sam Smith & Kim Petras'},
{'순위': '92위', '제목': '그중에 그대를 만나', '가수': '김호중'},
{'순위': '93위', '제목': 'Every Second', '가수': 'Mina Okabe'},
{'순위': '94위', '제목': 'Say I Love You', '가수': '우디 (Woody)'},
{'순위': '95위', '제목': 'NOT SORRY (Feat. pH-1) (Prod. by Slom)', '가수': '이영지'},
{'순위': '96위', '제목': '밤하늘의 별을 (2020)', '가수': '경서'},
{'순위': '97위', '제목': '밤이 무서워요 (Lonely Night)', '가수': '주주 시크릿'},
{'순위': '98위', '제목': 'Ai Wo Tsutaetaidatoka', '가수': 'Aimyon'},
{'순위': '99위', '제목': '봄여름가을겨울 (Still Life)', '가수': 'BIGBANG (빅뱅)'},
{'순위': '100위', '제목': 'Love Me Like This', '가수': 'NMIXX'},
{'순위': '101위', '제목': 'Weekend', '가수': '태연 (TAEYEON)'},
{'순위': '102위', '제목': '첫눈처럼 너에게 가겠다', '가수': '에일리 (Ailee)'},
{'순위': '103위', '제목': '딱 10CM만', '가수': '10CM & BIG Naughty (서동현)'},
{'순위': '104위', '제목': 'Next Level', '가수': 'aespa'},
{'순위': '105위',
'제목': '한사람만 (2023) (여름날 우리 X 이홍기 (FT아일랜드))',
'가수': '이홍기 (FT아일랜드)'},
{'순위': '106위', '제목': '상록수', '가수': '이우'},
{'순위': '107위', '제목': '에잇 (Prod. & Feat. SUGA of BTS)', '가수': '아이유 (IU)'},
{'순위': '108위', '제목': 'Candy', '가수': 'NCT DREAM'},
{'순위': '109위', '제목': 'Me You (Feat. 백예린 of 15&)', '가수': 'San E (산이)'},
{'순위': '110위', '제목': '빙글빙글 (Prod. by R.Tee)', '가수': '헤이즈 (Heize)'},
{'순위': '111위', '제목': 'Bad Habits', '가수': 'Ed Sheeran'},
{'순위': '112위', '제목': 'Rush Hour (Feat. j-hope of BTS)', '가수': 'Crush'},
{'순위': '113위', '제목': '안녕이라고 말하지마', '가수': 'V.O.S'},
{'순위': '114위', '제목': 'FRIEND THE END', '가수': '볼빨간사춘기'},
{'순위': '115위', '제목': '당신을 만나', '가수': '김호중 & 송가인'},
{'순위': '116위', '제목': '나의 목소리로', '가수': '김호중'},
{'순위': '117위', '제목': 'INVU', '가수': '태연 (TAEYEON)'},
{'순위': '118위', '제목': 'LOVE me', '가수': "BE'O (비오)"},
{'순위': '119위', '제목': '자격지심 (Feat. ZICO)', '가수': "BE'O (비오)"},
{'순위': '120위', '제목': '흔들리는 꽃들 속에서 네 샴푸향이 느껴진거야', '가수': '장범준'},
{'순위': '121위', '제목': 'Bad', '가수': 'Christopher'},
{'순위': '122위',
'제목': "That's Not How This Works (Feat. Dan + Shay)",
'가수': 'Charlie Puth'},
{'순위': '123위', '제목': 'Nostalgia', '가수': '우디 (Woody)'},
{'순위': '124위', '제목': '언제나 사랑해', '가수': '케이시 (Kassy)'},
{'순위': '125위', '제목': '한강에서 (Feat. BIG Naughty)', '가수': '폴킴'},
{'순위': '126위', '제목': 'Permission to Dance', '가수': '방탄소년단'},
{'순위': '127위',
'제목': 'That That (Prod. & Feat. SUGA of BTS)',
'가수': '싸이 (Psy)'},
{'순위': '128위', '제목': 'Like Crazy', '가수': '지민'},
{'순위': '129위', '제목': '사랑하지 않아서 그랬어', '가수': '임한별'},
{'순위': '130위', '제목': 'Blueming', '가수': '아이유 (IU)'},
{'순위': '131위', '제목': 'Love story', '가수': '볼빨간사춘기'},
{'순위': '132위', '제목': 'At My Worst', '가수': 'Pink Sweat$'},
{'순위': '133위',
'제목': "Stronger (What Doesn't Kill You)",
'가수': 'Kelly Clarkson'},
{'순위': '134위',
'제목': '오늘도 빛나는 너에게 (To You My Light) (Feat.이라온)',
'가수': '마크툽 (Maktub)'},
{'순위': '135위', '제목': '내 기쁨은 너가 벤틀리를 끄는 거야', '가수': '김승민'},
{'순위': '136위', '제목': 'OHAYO MY NIGHT', '가수': '디핵 (D-Hack) & PATEKO'},
{'순위': '137위', '제목': '떠나보낼 준비해 둘걸 그랬어', '가수': '임한별'},
{'순위': '138위', '제목': 'Forever Young', '가수': 'BLACKPINK'},
{'순위': '139위', '제목': 'Celebrity', '가수': '아이유 (IU)'},
{'순위': '140위', '제목': '이 새벽에 전화하는 건', '가수': '황인욱'},
{'순위': '141위', '제목': '나보다 더 사랑해요', '가수': '김호중'},
{'순위': '142위', '제목': 'strawberry moon', '가수': '아이유 (IU)'},
{'순위': '143위', '제목': '발걸음', '가수': 'DK (디셈버)'},
{'순위': '144위', '제목': '고백', '가수': '멜로망스 (MeloMance)'},
{'순위': '145위',
'제목': 'Left and Right (Feat. Jung Kook of BTS)',
'가수': 'Charlie Puth & 정국 & 방탄소년단'},
{'순위': '146위', '제목': '부동의 첫사랑', '가수': '10CM'},
{'순위': '147위', '제목': '주마등', '가수': '김호중'},
{'순위': '148위', '제목': '어떻게 이별까지 사랑하겠어, 널 사랑하는 거지', '가수': 'AKMU (악뮤)'},
{'순위': '149위', '제목': 'F*ck My Life', '가수': '세븐틴 (SEVENTEEN)'},
{'순위': '150위', '제목': '모든 순간을 기억할게', '가수': '봉훈'},
{'순위': '151위', '제목': '다시 사랑한다면 (니글니글 버터플라이)', '가수': '김필'},
{'순위': '152위', '제목': '사람 Pt.2 (Feat. 아이유)', '가수': 'Agust D'},
{'순위': '153위', '제목': '빛이 나는 사람', '가수': '김호중'},
{'순위': '154위', '제목': '바라만 본다', '가수': 'MSG워너비 (M.O.M)'},
{'순위': '155위', '제목': '오래된 노래', '가수': 'Standing Egg (스탠딩 에그)'},
{'순위': '156위', '제목': '12 : 45 (Stripped)', '가수': 'etham'},
{'순위': '157위',
'제목': 'Angel Pt. 1 (Feat. JVKE & Muni Long) (FAST X Soundtrack)',
'가수': '지민'},
{'순위': '158위', '제목': 'Made You Look', '가수': 'Meghan Trainor'},
{'순위': '159위',
'제목': '찰나가 영원이 될 때 (The Eternal Moment)',
'가수': '마크툽 (Maktub)'},
{'순위': '160위', '제목': '만개 (Prod. 신지후)', '가수': '김호중'},
{'순위': '161위', '제목': '헤픈 우연', '가수': '헤이즈 (Heize)'},
{'순위': '162위', '제목': 'Yet To Come', '가수': '방탄소년단'},
{'순위': '163위', '제목': '달라달라', '가수': 'ITZY (있지)'},
{'순위': '164위', '제목': '인생은 뷰티풀', '가수': '김호중'},
{'순위': '165위', '제목': 'parachute', '가수': 'John K'},
{'순위': '166위', '제목': '한 페이지가 될 수 있게', '가수': 'DAY6 (데이식스)'},
{'순위': '167위', '제목': '예뻤어', '가수': 'DAY6 (데이식스)'},
{'순위': '168위', '제목': 'Tiny Riot', '가수': 'Sam Ryder'},
{'순위': '169위', '제목': 'Shape Of You', '가수': 'Ed Sheeran'},
{'순위': '170위', '제목': '내 손을 잡아', '가수': '아이유 (IU)'},
{'순위': '171위', '제목': 'Salty & Sweet', '가수': 'aespa'},
{'순위': '172위', '제목': '슬픈등', '가수': '김호중'},
{'순위': '173위', '제목': '그리워하다', '가수': '비투비'},
{'순위': '174위', '제목': '팡파레', '가수': '다비치'},
{'순위': '175위', '제목': 'Memories', '가수': 'Maroon 5'},
{'순위': '176위', '제목': '있잖아', '가수': '폴킴'},
{'순위': '177위', '제목': '새벽에 걸려온 너의 전화는', '가수': '한동근'},
{'순위': '178위', '제목': '약속 (約束)', '가수': '김호중'},
{'순위': '179위', '제목': '아로하', '가수': '조정석'},
{'순위': '180위', '제목': '우린 그렇게 사랑해서', '가수': '강민경 (다비치) & 잔나비 최정훈'},
{'순위': '181위', '제목': 'Il Mare Calmo Della Sera', '가수': '김호중'},
{'순위': '182위', '제목': "I Ain't Worried", '가수': 'OneRepublic'},
{'순위': '183위', '제목': '풍등', '가수': '이찬원'},
{'순위': '184위', '제목': 'Feel My Rhythm', '가수': 'Red Velvet (레드벨벳)'},
{'순위': '185위', '제목': '이 세상 끝까지', '가수': '먼데이 키즈 (Monday Kiz) & #안녕'},
{'순위': '186위',
'제목': '회전목마 (Feat. Zion.T & 원슈타인) (Prod. by Slom)',
'가수': 'sokodomo'},
{'순위': '187위', '제목': '도깨비불 (Illusion)', '가수': 'aespa'},
{'순위': '188위', '제목': '그리움의 계절', '가수': '김호중'},
{'순위': '189위', '제목': 'GHOST TOWN', '가수': 'Benson Boone'},
{'순위': '190위',
'제목': 'BLUE MOON (Prod. by GroovyRoom)',
'가수': '효린 & 창모 (CHANGMO)'},
{'순위': '191위', '제목': '잘가요', '가수': '주호'},
{'순위': '192위', '제목': '10,000 Hours', '가수': 'Dan + Shay & Justin Bieber'},
{'순위': '193위', '제목': '거북이', '가수': '다비치'},
{'순위': '194위', '제목': 'HOT', '가수': '세븐틴 (SEVENTEEN)'},
{'순위': '195위', '제목': 'D (half moon) (Feat. 개코)', '가수': 'DEAN'},
{'순위': '196위', '제목': '사랑한다고 말해줘', '가수': '탑현'},
{'순위': '197위', '제목': '그대를 알고', '가수': '송하예'},
{'순위': '198위', '제목': 'Loving U (러빙유)', '가수': '씨스타 (Sistar)'},
{'순위': '199위', '제목': "Don't Know What To Do", '가수': 'BLACKPINK'},
{'순위': '200위', '제목': '사랑했나봐', '가수': '이창섭'}]
In [ ]:
df_chart = pd.DataFrame(chart)
df_chart
Out[ ]:
순위 | 제목 | 가수 | |
---|---|---|---|
0 | 1위 | 퀸카 (Queencard) | (여자)아이들 |
1 | 2위 | I AM | IVE (아이브) |
2 | 3위 | Spicy | aespa |
3 | 4위 | Kitsch | IVE (아이브) |
4 | 5위 | UNFORGIVEN (Feat. Nile Rodgers) | LE SSERAFIM (르세라핌) |
... | ... | ... | ... |
195 | 196위 | 사랑한다고 말해줘 | 탑현 |
196 | 197위 | 그대를 알고 | 송하예 |
197 | 198위 | Loving U (러빙유) | 씨스타 (Sistar) |
198 | 199위 | Don't Know What To Do | BLACKPINK |
199 | 200위 | 사랑했나봐 | 이창섭 |
200 rows × 3 columns
In [ ]:
df_chart.to_excel('genie_chart.xlsx')
728x90
반응형
'과제' 카테고리의 다른 글
(Python, 과제) 크롤링 과제2 (1) | 2023.06.09 |
---|---|
(CSS, 과제) 교촌 치킨 클론코딩 (0) | 2023.04.05 |
(CSS, 과제) 뉴스 페이지와 즐겨찾기 페이지 (0) | 2023.03.28 |
(HTML, 과제) 이력서 만들기 (0) | 2023.03.28 |
(파이썬, MySQL, 과제) 자판기 프로그램 (0) | 2023.03.28 |
Comments