인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

권혁진님의 프로필 이미지
권혁진

작성한 질문수

파이썬 입문 및 웹 크롤링을 활용한 다양한 자동화 어플리케이션 제작하기

파이썬 urllib을 활용한 웹에서 필요한 데이터 추출하기(2)

decode() 가 어떤 의미인지 알고싶습니다

해결된 질문

작성

·

230

0

import sys
import io
import urllib.request as req
from urllib.parse import urlencode

sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding = 'utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding = 'utf-8')

api = "https://api.ipify.org"

values = {
    'format' : 'json'
}
print('before', values)
params = urlencode(values)
print('after', params)

url = api + "?" + params
print("요청 url", url)


reqData = req.urlopen(url).read().decode('utf-8')
print("출력", reqData)

질문 1. reqData에서 왜 decode(utf-8) 을쓰는 이유가 뭐져? 저 함수를 지워도 출력은 똑같은데 어떤 의미가 있는지 궁금해서 질문합니다!

질문 2. 왜 urlencode를 쓰는지 궁금합니다. 인코드를 하지않고 'format' : 'json' 형태로 요청해도 아이피가 출력되는데 굳이 인코드를해서 format=json으로 요청하셨는지 궁금합니다.

답변 1

1

좋은사람님의 프로필 이미지
좋은사람
지식공유자

네 권혁진님

 

urlencode는 어떤 일종의 규악입니다. 

 

요즘은 그냥 한글 url로 보내기도 하지만, 아직까지는 인코딩해서 보내는 방법을 주로 사용하고 있습니다.

 

format=json 형태는 해당 api에서 요구하는 방법의 한 가지 형태입니다.

 

편한 방법으로 보내시면 됩니다.

 

decode는 송신 측과 수신측의 코드를 파이썬에서 유니코드 또는 utf-8로 변환하기 위해서

 

사용한 함수입니다. 현재 시점에서는 함수가 없어도 작동합니다. 기본 python 3.x는 utf-8 이거든요.

 

시간 나실 때 아래 링크를 읽어보세요. 잘 나와 있습니다.

 

https://redscreen.tistory.com/163

권혁진님의 프로필 이미지
권혁진

작성한 질문수

질문하기