본문 바로가기

Python

[Python] 파이썬으로 Http 통신 하는 법

이번 시간에는 Http 통신을 하여 받아온

XML 데이터를 Parsing하는 방법을 알아보겠습니다.

먼저 요청 주소가 http로 시작하는지

https로 시작하는지 확인하고

http의 경우 httpConnection을,

https의 경우 httpsConnection 객체를 선언해야합니다.

 

hc = HTTPSConnection("www.kma.go.kr")

 

파라미터로는 요청할 서버 주소를 넣어주면 됩니다.

 

hc.request("GET", "/wid/queryDFSRSS.jsp?zone=4122066000")

 

다음은 요청을 보내야 하는데

request에 요청 방식과, 요청 주소의 나머지 주소값을 파라미터로 넣어줍니다.

 

res = hc.getresponse() # 응답
resBody = res.read() # 응답 내용 읽기

 

그리고 서버로부터 받은 응답을 getresponse를 통해 받아오고

해당 응답 전체를 읽어서 resBody에 넣습니다.

 

kmaWeather = fromstring(resBody)

 

넘어온 데이터는 모두 resBody에 들어가게 되고,

fromstring을 사용해서 해당 XML데이터를

string으로 변환합니다.

 

이제 문자열을 출력하기만 하면 되는데

iter를 사용하면 DOM객체를 여러개 찾을 수 있습니다. 

 

for w in fromstring(resBody).iter("data"):

 

XML데이터를 확인한 결과 data라는 DOM객체로

하위 DOM객체를 감싸고 있었기 때문에

전체 DOM객체를 조회한 뒤

 

for w in fromstring(resBody).iter("data"):
    print(w.find("hour").text)
    print(w.find("temp").text)
    print(w.find("wfKor").text)
    print(w.find("wdKor").text)
    print("----------------------")

 

필요한 하위 DOM객체들의 내용을 출력했습니다.

 

 

이런 식으로 XML데이터의 내용이 조회됩니다.

 


from http.client import HTTPSConnection
from xml.etree.ElementTree import fromstring


# Http 통신

hc = HTTPSConnection("www.kma.go.kr") # 서버 주소(KR까지)
hc.request("GET", "/wid/queryDFSRSS.jsp?zone=4122066000") #요청(요청 방식, 나머지 주소값)

res = hc.getresponse() # 응답
resBody = res.read() # 응답 내용 읽기
kmaWeather = fromstring(resBody)
weather = kmaWeather.iter("data")


for w in fromstring(resBody).iter("data"):
    print(w.find("hour").text)
    print(w.find("temp").text)
    print(w.find("wfKor").text)
    print(w.find("wdKor").text)
    print("----------------------")

 

전체 코드입니다.

확실히 코드수만봐도

Java보다는 XML 데이터에 접근하는 것이

간단해졌다고 느꼈습니다.

'Python' 카테고리의 다른 글