python/beatifulsoup 뷰티풀스프

BeautifulSoup(bs4) 미세먼지/네이버 영화순위 크롤링

고로케 2021. 3. 18.
반응형

#07. 미세먼지 url로 정보 가져오기

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

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

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

gus = rjson['RealtimeCityAir']['row']

for gu in gus:
    gu_name = gu['MSRSTE_NM']
    gu_mise = gu['IDEX_MVL']
    if (gu_mise < 120):
        print(gu_name, gu_mise)

 

#08. 네이버 영화 순위 가져오기  

1. 타이틀 이름 가져오는 연습

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://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=pnt&date=20200303', headers=headers)

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

# 코딩 시작

# 한개만 가져올 때 .select_one  / 여러개는 .select
title = soup.select_one('#old_content > table > tbody > tr:nth-child(2) > td.title > div > a')

# print((title).text)  #// tag 의 텍스트만 가져옴  -> 결과: 그린북

print(title['href'])  # // tag의 속성을 가져옴 ->결과: /movie/bi/mi/basic.nhn?code=171539

# old_content > table > tbody > tr:nth-child(2)
# old_content > table > tbody > tr

trs = soup.select('#old_content > table > tbody > tr')

for tr in trs:
    # print(tr)
    a_tag = tr.select_one('td.title > div > a')
    # print(a_tag)
    # print(a_tag.text)   # .text 시 해당 리스트에 none 값이 있으면 에러남
    if a_tag is not None:
        title = a_tag.text
        print(title)

 

2. 순위와 평점을 가져오자 -완성본

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://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=pnt&date=20200303', headers=headers)

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

# 코딩 시작

# 한개만 가져올 때 .select_one  / 여러개는 .select
title = soup.select_one('#old_content > table > tbody > tr:nth-child(2) > td.title > div > a')

# print((title).text)  #// tag 의 텍스트만 가져옴  -> 결과: 그린북

print(title['href'])  # // tag의 속성을 가져옴 ->결과: /movie/bi/mi/basic.nhn?code=171539

# old_content > table > tbody > tr:nth-child(2)
# old_content > table > tbody > tr

trs = soup.select('#old_content > table > tbody > tr')

for tr in trs:
    # print(tr)
    a_tag = tr.select_one('td.title > div > a')
    # print(a_tag)
    # print(a_tag.text)   # .text 시 해당 리스트에 none 값이 있으면 에러남
    if a_tag is not None:
        rank = tr.select_one('td:nth-child(1) > img')['alt']
        title = a_tag.text
        star = tr.select_one(' td.point').text
        print(rank , title, star)
반응형

댓글