박미미의 지식에서 쌓는 즐거움

파이썬:: 웹크롤링 해보기 (일간 노래순위 가져와보기) 본문

IT 공부/파이썬 공부

파이썬:: 웹크롤링 해보기 (일간 노래순위 가져와보기)

낑깡좋아 2019. 7. 13. 00:00

html 페이지 전체를 크롤링하는것까지 배웠다. (하단링크 참고)

  파이썬:: 웹크롤링 준비하기(1편)

https://parkmimi.tistory.com/23

 



그러면 이제 특정페이지에 내가 원하는 데이터를 가져와보자.

지금 예로 들건 '네이버 뮤직' 에서 일간 top100 하는 노래 제목, 가수 이름 등을 알기 위한 작업이다.

 (https://music.naver.com/listen/top100.nhn?domain=TOTAL&duration=1d&page=1)





f12를 눌러 html 코드를 확인해보자.

난 top100의 노래제목을 가져오고 싶다. 노래제목 부분의 <td>를 확인해서 한 행을 보자.

내가 필요한 부분을 아래 소스.

<td class="name">

<a href="/album/index.nhn?albumId=3070370" class="thumb pht36 NPI=a:image,r:1,i:3070370">

<img src="https://musicmeta-phinf.pstatic.net/album/003/070/3070370.jpg?type=r32Fll&amp;v=20190618175903" onerror="this.onerror=null;this.src='https://musicmeta-phinf.pstatic.net/album/000/000/0.jpg?type=r32Fll&amp;v=20190618175903';" width="32" height="32" alt="술이 문제야" title="술이 문제야">

<span class="ellipsis">술이 문제야</span>

</a>

</td>

<td class="_artist artist no_ell2">

<a href="javascript:void(0);" title="" alt="" class="NPI=a:layerbtn,r:1">장혜진</a> 

</td>

html코드가 조금 길다고 당황하지 말고 내가 필요한부분, 주황색으로 표시된 부분만 확인하면 됩니다.



#웹서버에 요청

import urllib.request


#검색에 요청

from bs4 import BeautifulSoup

data = urllib.request.urlopen("https://music.naver.com/listen/top100.nhn?domain=TOTAL&duration=1d&page=1")


soup = BeautifulSoup(data, "html.parser")    #html을 가져와서 soup 이라는 객체에 저장한다. 


songtitle = soup.find_all("td", class_="name") #<td class="name"> 부분을 찾는다

title = songtitle[0].find("span").text #<td class="name"> 부분 중 <span class="ellipsis">술이 문제야</span> 부분찾기 


for item in songtitle:

    print( item.text.strip() )



결과

술이 문제야

헤어져줘서 고마워

Snapping

너에게 못했던 내 마지막 말은

Speechless (Full)

사랑에 연습이 있었다면 (Prod. 2soo)

솔직하게 말해서 나

2002

작은 것들을 위한 시 (Boy With Luv) (Feat. Halsey)

bad guy

A Whole New World

FANCY

..

.



여기서의 코드 한계가 있다.

한 페이지에 노래 순위 1~50위까지 되어있어서 51~100위는 가져오기 힘들다는 것.

이걸 다음 포스트에서 정리해보겠다.

Comments