스파르타 왕초보 시작반 3주차

홍영훈·2021년 6월 22일
0

Python 기본 문법
파이썬 패키지 설치 - Requests
mongoDB
크롤링 - bs4

requests 기본 셋팅

import requests # requests 라이브러리 설치 필요

r = requests.get('http://openapi.seoul.go.kr:8088/6d4d776b466c656533356a4b4b5872/json/RealtimeCityAir/1/99')
rjson = r.json()

print(rjson['RealtimeCityAir']['row'][0]['NO2'])

크롤링 기본 셋팅

import requests
from bs4 import BeautifulSoup

# 타겟 URL을 읽어서 HTML를 받아오고,
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://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=pnt&date=20200303',headers=headers)

# HTML을 BeautifulSoup이라는 라이브러리를 활용해 검색하기 용이한 상태로 만듦
# soup이라는 변수에 "파싱 용이해진 html"이 담긴 상태가 됨
# 이제 코딩을 통해 필요한 부분을 추출하면 된다.
soup = BeautifulSoup(data.text, 'html.parser')

#############################
# (입맛에 맞게 코딩)
#############################

지니뮤직에서 순위, 제목, 가수 웹스크래핑

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:
    td_number = tr.select_one('td.number')
    rank = td_number.text[0:2].strip()

    a_title = tr.select_one('td.info > a.title.ellipsis')
    title = a_title.text.strip()

    a_artist = tr.select_one('td.info > a.artist.ellipsis')
    artist = a_artist.text.strip()

    print(rank, '위 :', title, '-', artist)

제목 및 가수 이름을 쉽게 웹스크래핑하였으나, 순위를 스크래핑하는데 애를 먹었다. td.number 아래 span의 자식 태그가 있는데, 그 태그 아래의 텍스트를 어떻게 제거해야할지, 또 span 태그 때문이지 많은 공백이 발생하는데 쉽게 제거되지도 않았다. slicing으로 해결하는데까지 꽤 많은 시간이 걸렸다...

profile
코딩을 처음 배워가는 코린이?

0개의 댓글