5 ответов:
что-то вроде этого должно работать, если я понимаю, о чем речь:
import json import urllib2 json.load(urllib2.urlopen("url"))
Я бы дал запросы библиотека для этого. По сути, это просто гораздо более простая в использовании оболочка вокруг стандартных библиотечных модулей (например, urllib2, httplib2 и т. д.) вы бы использовали для того же самого. Например, чтобы извлечь данные json из url-адреса, который требует обычной проверки подлинности, будет выглядеть следующим образом:
import requests response = requests.get('http://thedataishere.com', auth=('user', 'password')) data = response.json()для проверки подлинности kerberos проектов имеет reqests-kerberos библиотека, которая предоставляет kerberos класс аутентификации, который можно использовать с запросы:
import requests from requests_kerberos import HTTPKerberosAuth response = requests.get('http://thedataishere.com', auth=HTTPKerberosAuth()) data = response.json()
вам в основном нужно сделать HTTP-запрос к службе, а затем проанализировать тело ответа. Мне нравится использовать httplib2 для этого:
import httplib2 as http import json try: from urlparse import urlparse except ImportError: from urllib.parse import urlparse headers = { 'Accept': 'application/json', 'Content-Type': 'application/json; charset=UTF-8' } uri = 'http://yourservice.com' path = '/path/to/resource/' target = urlparse(uri+path) method = 'GET' body = '' h = http.Http() # If you need authentication some example: if auth: h.add_credentials(auth.user, auth.password) response, content = h.request( target.geturl(), method, body, headers) # assume that content is a json reply # parse content with the json module data = json.loads(content)
Если вы хотите использовать Python 3, Вы можете использовать следующее:
import json import urllib.request req = urllib.request.Request('url') with urllib.request.urlopen(req) as response: result = json.loads(response.readall().decode('utf-8'))
Ну, прежде всего, я думаю, что выкатывание собственного решения для этого все, что вам нужно, это urllib2 или httplib2 . В любом случае, если вам требуется общий клиент REST, проверьте это .
https://github.com/scastillo/siesta
однако я думаю, что набор функций библиотеки не будет работать для большинства веб-сервисов, потому что они, вероятно, будут использовать oauth и т. д.. . Также мне не нравится тот факт, что он написан поверх httplib, что является болью по сравнению с httplib2 по-прежнему должен работать для вас, если вам не нужно обрабатывать много перенаправлений и т. д..
Comments