이전에 만들었던 지니뮤직 크롤러는 1위부터 50위까지

노래 제목만 출력이됐었다

 

지금 오라클을 이용해서 크롤링한 정보를 데이터베이스에 저장하게하고 싶어서

여러개의 정보가 같이 크롤링 되었으면 좋겠다고 생각했다

그래서 바로 추가해보았다

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'}
url = 'https://www.genie.co.kr/chart/top200'
resp = requests.get(url, headers = headers)
soup = BeautifulSoup(resp.text, 'html.parser')


songs = soup.findAll('a',{'class' : 'title ellipsis'})
peoples = soup.findAll('a',{'class':'artist ellipsis'})

for song, people, i in zip(songs, peoples, range(0,50)):
	title = song.text
	name = people.text
	print(str(i+1)+"위 "+title.strip()+" : "+name.strip())

 코드는 크게 달라진것이 없다. 

저번에 어떤분이 댓글로 findAll()을 이용해서 크롤링 하는방법을 알려주었는데 

코드가 훨씬 간결하고 보기좋게 바뀌어서 findAll() 함수를 이용해서 바꿔보았다.

 

for문을 이용해서 songs와 peoples에 동시에 접근하는 방법을 몰라서 

애를 먹었는데 구글링해보니 금방 찾을 수 있었다.

zip()함수를 이용해서 쉽게 접근 할수있었다.

 

이렇게 정상적으로 1위부터 50위까지 노래제목과 가수이름이 크롤링된것을 볼수있다.

Junyoung.dev