스파르타 웹개발 종합반 3주차 강의 개발일지

박지환·2022년 3월 28일
0

웹스크래핑(크롤링)

3주차 숙제: 지니뮤직의 1~50위 곡을 스크래핑

<내가 쓴 코드>

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:
    a_tag = tr.select_one('td.info > a.title.ellipsis')

    if a_tag is not None:
        title = a_tag.text.strip()
        rank = tr.select_one('td.number')
        rank_num = rank.text.split()[0]
        singer = tr.select_one('td.info > a.artist.ellipsis').text
        print(rank_num, title, singer)

<답안>

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'}
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:
    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)
  • 마치며
    역시 내가 쓴 코드가 더 길고 지저분한 느낌이다.
    그래도 답안과 다른 방법으로 같은 결과를 낸 건 뿌듯한 일이다.

    rank = tr.select_one('td.number').text[0:2].strip()
    이 코드를 생각해내지 못해서

    rank_num = rank.text.split()[0]
    이 코드로 순위를 가져왔다.

스파르타 웹개발종합반 여섯째 날 일지(3-1~7)

스파르타 웹개발종합반 일곱째 날 일지(3-8~15)

profile
시작은 창대하나 끝은 미약하리라

0개의 댓글

관련 채용 정보