0128_TIL

이종현·2022년 2월 2일
0

TIL

목록 보기
11/20
post-thumbnail

Today's Tip

#파이썬 list() ' [ ] ' 차이

a_lst = list(map(int, input().split()))
#list() => 리스트로 형을 변환
b_list = [map(int, input().split())]
#그냥 비어있는 리스트에 형 변환 되지 않은 map(int,input().split())된 결과가 들어간다.
>>>
input : 2 3 4
a_lst => [2,3,4]
b_lst => [<map object at >]

요청과 응답

  • HTTP
  • requests

    • 요청과 응답을 처리해주는 파이썬 라이브러리

    • $ python -m pip install requests
  • BeautifulSoup

    • HTM and XML 파일에서 데이터를 가져올 수있는 파이썬 라이브러리
    • JSON 파일 일 경우에는 안써도 된다.

정보 스크랩 1 단계 - 요청

  • 정보가 있는 url 확인 및 요청
  • 선택자(Selector)
#웹사이트의 정보를 준비한다
import requests
from bs4 import BeautifulSoup

# r = requests.get('https://www.themoviedb.org/?language=ko')
# print(r.text)

# 1. 주소
URL = 'https://finance.naver.com/sise/'

# 2. 요청
# response (200) : 성공적으로 가져왔다 ! 404/500

response = requests.get(URL).text
# print(response, type(response))  # type : string

# 2-1 . 선택자 (Selector)
# BeautifulSoup ( text -> 다른 객체 )
data = BeautifulSoup(response,'html.parser')
#print(type(data)) # type <class 'bs4.BeautifulSoup'>
# 내가 원하는 정보를 찾는다.
kospi = data.select_one('#KOSPI_now')
print(kospi.text)

API

  • 컴퓨터 나 컴퓨터 프로그램 사이의 연결
  • 일종의 소프트웨어 인터페이스 이며 다른 종류의 소프트웨어 서비스를 제공

API 활용 방법

  • 요청하는 방식에 대한 이해
    • 인증 방식
    • URL 생성
  • 응답 결과에 대한 이해
    • 응답 결과 타입 ( JSON )
    • 응답 결과 구조

naver 영화 API => 딕셔너리 타입으로 얻어 올 수 있음


  • 과거 데이터 : 파일 데이터
  • 실시간 : OpenAPI

관통 pjt

https://api.themoviedb.org/3/movie/76341?api_key=<<api_key>>
												#params
# 0. import
import requests
from pprint import pprint

# 1. URL & 요청 변수 설정
# BASE = 'https://api.themoviedb.org/3/movie/550?api_key=599d9943faf8858722e82a75833aa6b0'
BASE = 'https://api.themoviedb.org/3'
path = '/movie/now_playing'
params = {
    'api_key' : '599d9943faf8858722e82a75833aa6b0',
    'region' : 'KR',
    'language' : 'ko'
}
# 2. 요청 보낸 결과 저장

#respone = requests.get(BASE+path,params=params).json()
respone = requests.get(BASE+path,params=params)
print(respone.status_code, respone.url)
data = respone.json()

# 3. 조작
# print(respone) -> type(dict)
# response.url => url 로 만들어짐 
# 단, respone.json() 을 했을 때에는 만들어 지지 않음
# pprint(respone.url)


results = data.get('results')
movie_id=[]
for movie in results:
    movie_id.append(movie.get('id'))
# print(movie_id)
#/movie/{movie_id}/release_dates

data = []
for i in movie_id:
    respone1 = requests.get(BASE,f'/movie/{i}/release_dates')
    data.append(respone1)
print(data)
profile
개발 일기

0개의 댓글