import requests as req
import pandas as pd
from bs4 import BeautifulSoup as bs
url ='https://www.melon.com/chart/index.htm'
# 서버에게 브라우저로 접속했다라는 것을 인지시키기 위한 헤더
header = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36'}
res = req.get(url, headers=header).text
html = bs(res, 'lxml')
# 하나만 가져오기 select_one
# select를 이용하면 반환하는 값은 리스트
rank = html.select_one('td span.rank')
albumlmg = html.select_one('a.image_typeAll > img')
songNm = html.select_one('div.ellipsis.rank01 > span')
artist = html.select_one('div.ellipsis.rank02 span')
print(rank.text)
# print(albumlmg.get('alt')), print(albumlmg.get('width'))
print(albumlmg.get('src'))
print(songNm.text)
print(artist.text)
# select를 이용해서 여러개 값 구하기
ranks = html.select('td span.rank')
albumlmgs = html.select('a.image_typeAll > img')
songNms = html.select('div.ellipsis.rank01 > span > a')
artists = html.select('div.ellipsis.rank02 span')
ranklist = []
albumimglist = []
songNmlist = []
artistlist = []
for i in range(len(ranks)):
ranklist.append(ranks[i].text)
albumimglist.append(albumlmgs[i].get('src'))
songNmlist.append(songNms[i].text)
artistlist.append(artists[i].text)
# print(ranks[i].text)
# print(albumlmgs[i].get('src'))
# print(songNms[i].text)
# print(artists[i].text)
# print('-' * 20)
melon_dic = {
'순위' : ranklist,
'곡명' : songNmlist,
'아티스트' : artistlist,
'이미지URL' : albumimglist
}
melon_df = pd.DataFrame(melon_dic)
melon_df.head()
# melon_top100.csv 파일로 저장하기
melon_df.to_csv('melon_top100.csv', encoding = 'euc-kr')
728x90
반응형
'크롤링' 카테고리의 다른 글
크롤링_네이버 영화 리뷰 수집(실습) (0) | 2022.06.28 |
---|---|
크롤링_영화 이름 및 평점 수집(실습) (0) | 2022.06.28 |
크롤링_네이버 뉴스 데이터 수집(실습) (0) | 2022.06.27 |
크롤링_beautifulSoup (0) | 2022.06.27 |
크롤링_requests (0) | 2022.06.27 |