4차산업혁명의 일꾼/데이터 크롤링과 파이썬

파이썬 크롤링 해서 지니뮤직 랭크 뿌려주기(BeautifulSoup)

르무엘 2023. 3. 21. 20:59
from pymongo import MongoClient
import jwt
import datetime
from datetime import datetime, timedelta
import hashlib
from flask import Flask, render_template, jsonify, request, redirect, url_for
import requests
from bs4 import BeautifulSoup
from werkzeug.utils import secure_filename

BeautifulSoup 으로 긁어온다. (soup.select -> css 셀렉터)

긁어 온것을 뿌려준다.

 

매일 긁어서 뿌려야 하기에

time 을 datetime.now().strftime("%Y%m%d")

 하기에 넣어서 긁어오는 시점이 매일의 당일이 된다.

 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(f'https://www.genie.co.kr/chart/top200?ditc=M&rtm=N&ymd={time}',
 headers=headers)

 

@app.route("/music", methods=["GET"])
def music_get():
    time = datetime.now().strftime("%Y%m%d")

    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(f'https://www.genie.co.kr/chart/top200?ditc=M&rtm=N&ymd={time}', headers=headers)

    soup = BeautifulSoup(data.text, 'html.parser')

    trs = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
    music_list = []
    a = 0
    for tr in trs:
        title = tr.select_one('td.info > a.title.ellipsis').text.strip()
        rank = tr.select_one('td.number').text[0:2].strip()
        artist = tr.select_one('td.info > a.artist.ellipsis').text
        # print(rank, title, artist)
        if a == 10:
            break
        doc = {
            'rank': rank,
            'title': title,
            'artist': artist
        }
        a = a + 1
        music_list.append(doc)

    # print(music_list)
    return jsonify({'music': music_list})

 

2023년 3월 21일 지니뮤직 음악순(https://www.genie.co.kr/chart/top200?ditc=M&rtm=N)

2023년 3월 21일 지니뮤직 크롤링 음악순

 

이상 간단 크롤링이었습니다.~~

LIST