멜론 최신곡 검색
웹 스크래핑을 이용한 데이터 가져오기
1) 멜론 사이트에서 국내 최신곡 10위까지의 정보를 노래제목, 가수, 앨범, 좋아요 수를 출력하시오
tables = pd.read_html(requests.get(url,
headers={'User-agent': 'Mozilla/5.0'}).text,
attrs={"class":"tabelle_grafik"})[0]
import pandas as pd
import requests
from bs4 import BeautifulSoup
url ='https://www.melon.com/new/index.htm'
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36'}
table = pd.read_html(requests.get(url, headers=headers).text)
table[0]
# 가수 : div rank02
# 앨범 : div rank03
# 좋아요 : span cnt
import requests
from bs4 import BeautifulSoup
url ='https://www.melon.com/new/index.htm'
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36'}
response = requests.get(url, headers=headers)
response.raise_for_status()
soup = BeautifulSoup(response.text, 'html.parser')
all_song = soup.find_all('tr')
for i, song in enumerate(all_song) :
#print(song)
title = song.find_all('div', attrs={'class' : 'rank01'})
if len(title) == 0 : continue
if i >10 : break
title = title[0].a.get_text()
print(i, title, end=' ')
singer = song.find_all('div', attrs={'class' : 'rank02'})
singer = singer[0].a.get_text()
print(singer, end=' ')
album = song.find_all('div', attrs={'class' : 'rank03'})
album = album[0].a.get_text()
print(', 앨범명:', album)
2) 네이버에서 bts이미지를 검색한 후 나온 결과 중 5개의 이미지를 저장
import os
import time
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
driver = webdriver.Chrome()
url ='https://search.naver.com/search.naver?where=image&sm=tab_jum&query=bts'
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36'}
# 셀레늄을 이용하여 특정 사이트로 이동한 후 1초동안 대기
driver.get(url)
time.sleep(1)
soup = BeautifulSoup(driver.page_source)
bts_imgs = soup.find_all('img', attrs={'class' : '_image _listImage'})
print('그림의 개수 :', len(bts_imgs)) # 첫 화면에 보이는 이미지의 개수=> 더 많음
# 이미지 저장할 폴더 생성
img_dir = './bts_img/'
if not os.path.exists(img_dir) : # 디렉토리가 없으면 생성
os.makedirs(img_dir)
print('폴더 생성')
else :
print('폴더가 존재함')
for i, image in enumerate(bts_imgs) :
img_url = image['src']
if(not img_url.startswith('http')) : continue
img_src = requests.get(img_url, headers=headers)
img_src.raise_for_status()
with open(img_dir + 'bts_{}.jpg'.format(i), 'wb') as f:
print(img_url)
f.write(img_src.content)
if i >= 10 : break;
print('BTS 사진 저장 완료')
temp1 = "http://www.naver.com"
temp2 = "http://www.daum.net"
print(temp1.startswith('http'))
print(temp2.startswith('http'))
print(temp1.endswith('com'))
print(temp2.endswith('com'))
pip install selenium
pip show selenium
구글에서 "chrome://version"
chromedriver를 검색해서
자신의 크롬 프로그램 버전에 맞는 chromedriver를 다운로드 받는다.
압축 해제