<스파르타2주차>지니뮤직 페이지 웹스크래핑(크롤링)하기

김경수·2022년 4월 13일
0
post-thumbnail

2020.04.03자 지니뮤직 차트의 순위, 곡 제목, 가수를 스크래핑 해보았습니다.

👉 20년 4월 3일자 지니차트
https://www.genie.co.kr/chart/top200?ditc=D&ymd=20200403&hh=23&rtm=N&pg=1
👉파이썬 패키지(requests,bs4)를 꼭 설치해주세요.

위 페이지의 차트에서 순위, 곡 제목, 가수를 아래와 같이 스크래핑!

👉스크래핑 기본 세팅 코드는 이전 작성글을 참고해주세요.

  • 순위
  • for tr in trs:
        rank = tr.select_one('td.number').text[0:2].strip()
        print(rank)
    1. .text를 이용하여 문자열만 출력하기!
    2. 순위의 숫자만 출력하기 위해 [0:2]를 이용하여 slice 해주기!
    3. .strip()을 이용하여 문자열 공백 제거 해주기!

  • 곡 제목
  • for tr in trs:
        title = tr.select_one('td.info > a.title.ellipsis').text.strip()
        print(title)
    1. 순위와 동일하게 .text를 이용하여 문자열만 출력하기!
    2. .strip()을 이용하여 문자열 공백 제거 해주기!

  • 가수
  • for tr in trs:
        artist = tr.select_one('td.info > a.artist.ellipsis').text
        print(artist)
    1. 순위와 동일하게 .text를 이용하여 문자열만 출력하기!

    [최종 스크래핑 코드]

    import requests
    from bs4 import BeautifulSoup
    
    from pymongo import MongoClient
    client = MongoClient('localhost', 27017)
    db = client.dbsparta
    
    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'}
    data = requests.get('https://www.genie.co.kr/chart/top200?ditc=D&ymd=20200403&hh=23&rtm=N&pg=1',headers=headers)
    
    soup = BeautifulSoup(data.text, 'html.parser')
    
    trs = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
    
    for tr in trs:
        rank = tr.select_one('td.number').text[0:2].strip()
        title = tr.select_one('td.info > a.title.ellipsis').text.strip()
        artist = tr.select_one('td.info > a.artist.ellipsis').text
    
        print(rank, title, artist)```
    profile
    개발은 1도 모르는 직장인의 개발자로 거듭나기

    0개의 댓글