2013-07-09 3 views
2

Django [python] 웹 어플리케이션에서 Twitch API를 사용하려고합니다. 나는 요청을 보내고 정보를 되찾고 싶지만, 내가하는 일을 정말로 모른다.컬링 - 파이썬 변환

curl -H 'Accept: application/vnd.twitchtv.v2+json' -X GET \ 
    https://api.twitch.tv/kraken/streams/test_channel 

이 비단뱀을 어떻게 변환합니까?

덕분에 내장 urllib2를 사용

+1

에서 찾을 수 있습니다 파이썬 3를 사용하는 경우

나는이 2.7이라고하지만, 명심 것인가? 너 뭐 해봤 니? 이것은 헤더가 하나 인 간단한 GET 요청이므로 검색 엔진으로 필요한 모든 정보를 찾을 수 있어야합니다. – Blender

+1

시작 장소는 ['urlopen'] (http://docs.python.org/3.3/library/urllib.request.html#urllib.request.urlopen)을 참조하십시오. 대신'requests' 나'pycurl'과 같은 서드 파티 라이브러리를 설치할 수도 있습니다. 그러나이 일에 대해서는 별다른 필요가 없습니다. – abarnert

답변

7

는 :

>>> import urllib2 
>>> req = urllib2.Request('https://api.twitch.tv/kraken/streams/test_channel') 
>>> req.add_header('Accept', 'application/vnd.twitchtv.v2+json') 
>>> resp = urllib2.urlopen(req) 
>>> content = resp.read() 

파이썬 3.x를를 사용하는 경우, 모듈은 urllib.request라고하지만, 그렇지 않으면 모두에게 동일한 기능을 수행 할 수 있습니다.

또한 간단한 API를 가지고 requests 같은 HTTP에 대한 타사 라이브러리를 사용할 수 있습니다 :

>>> import requests 
>>> r = requests.get('https://api.twitch.tv/kraken/streams/test_channel', 
        headers={'Accept': 'application/vnd.twitchtv.v2+json'}) 
>>> print(r.status_code) 
422 # <- on my machine, YMMV 
>>> print(r.text) 
{"status":422,"message":"Channel 'test_channel' is not available on Twitch", 
"error":"Unprocessable Entity"} 
+0

그럴 수도 있겠지만 그 이유는 무엇입니까? 이와 같은 사소한 경우는 파이썬에서 제공되는'urlopen'을 사용하면 쉽게 할 수 있습니다. – abarnert

+0

@abarnert : 당신 말이 맞습니다. 단지'요청들 (requests)'이 좀 더 좋은 API를 가지고 있다고 생각합니다. 어쨌든 - 'urllib2'예제를 추가했습니다. – miku

+0

사소한 케이스와 정말 불쾌한 케이스 (소켓 옵션에 연결해야 할 곳)에 대해서는 '요청'이 분명 쉽지만 때로는 훨씬 쉽습니다. 나는 'urlopen'을 고집 할 것을 제안했다. 왜냐하면 이것이 사소한 경우 중 하나이기 때문이다. 어쨌든, 좋은 대답. – abarnert

2

나는 보통 (차단) 파이썬 애플리케이션 내 API 요청에 urllib2를 사용합니다. 그런 다음 텍스트를 액세스 할 수 있습니다

>>> import urllib2 
>>> req = urllib2.Request('https://api.twitch.tv/kraken/streams/test_channel', None, {'Accept':'application/vnd.twitchtv.vs+json'}) 
>>> response = urllib2.urlopen(req) 

response.read()로 돌아왔다. 거기에서 선호하는 라이브러리로 JSON을 구문 분석 할 수 있지만 일반적으로는 json.loads(response.read()) 만 사용합니다. 당신이 도서관은 주위에 이동 된이 당신에게 붙어있는 urllib.request