Как получить и отобразить данные JSON видео Vimeo в Python 3.x? - PullRequest
1 голос
/ 21 января 2012

Я хочу получить и работать с основными данными Vimeo в Python 3.2, учитывая URL видео.Я новичок в JSON (и python), но это выглядело как подходящее для этого.

  1. Запрос видео данных Vimeo (через URL-адрес в формате .json в формате API)
  2. Преобразование возвращаемых данных JSON в python dict
  3. Отображение ключей и данных dict ("id", "title", "description" и т. Д.)

Другая страница SO Получение данных json через url и использование в python сделал что-то похожее в python 2.x, но изменения синтаксиса (например, интеграция urllib2) побудили меня попробовать это.

>>> import urllib
>>> import json
>>> req = urllib.request.urlopen("http://vimeo.com/api/v2/video/31161781.json")
>>> opener = urllib.request.build_opener()
>>> f = opener.open(req)
Traceback (most recent call last):
  File "<pyshell#28>", line 1, in <module>
    f = opener.open(req)
  File "C:\Python32\lib\urllib\request.py", line 358, in open
    protocol = req.type
AttributeError: 'HTTPResponse' object has no attribute 'type'

Этот код будет интегрирован всуществующий проект, поэтому я привязан к использованию Python.Я знаю достаточно о HTTP-запросах, чтобы угадать данные внутри этого объекта ответа, но недостаточно о Python, чтобы понять, почему открытие не удалось и как правильно ссылаться на него.Что я должен попробовать вместо opener.open(req)?

Ответы [ 3 ]

8 голосов
/ 21 января 2012

Это работает для меня:

import urllib.request, json

response = urllib.request.urlopen('http://vimeo.com/api/v2/video/31161781.json')
content = response.read()
data = json.loads(content.decode('utf8'))

Или с запросами:

import requests

data = requests.get('http://vimeo.com/api/v2/video/31161781.json').json()
1 голос
/ 21 января 2012

Можете ли вы просто попытаться запросить URL-адрес следующим образом

response = urllib.urlopen('http://www.weather.com/weather/today/Ellicott+City+MD+21042')
response_dict = json.loads(response.read())

Поскольку вы видите, что в python есть много библиотек, которые разделяют функциональность, вам не нужно создавать открывающее устройство или что-то еще, чтобы получить эти данные.

1 голос
/ 21 января 2012

Выезд: http://www.voidspace.org.uk/python/articles/urllib2.shtml

>>> import urllib2
>>> import json
>>> req = urllib2.Request("http://vimeo.com/api/v2/video/31161781.json")
>>> response = urllib2.urlopen(req)
>>> content_string = response.read()
>>> content_string
'[{"id":31161781,"title":"Kevin Fanning talks about hiring for Boston startups","description":"CogoLabs.com talent developer and author Kevin Fanning talks about hiring for small teams in Boston, how job seekers can make themselves more attractive, and why recruiters should go the extra mile to attract talent.","url":"http:\\/\\/vimeo.com\\/31161781","upload_date":"2011-10-26 15:37:35","thumbnail_small":"http:\\/\\/b.vimeocdn.com\\/ts\\/209\\/777\\/209777866_100.jpg","thumbnail_medium":"http:\\/\\/b.vimeocdn.com\\/ts\\/209\\/777\\/209777866_200.jpg","thumbnail_large":"http:\\/\\/b.vimeocdn.com\\/ts\\/209\\/777\\/209777866_640.jpg","user_name":"Venture Cafe","user_url":"http:\\/\\/vimeo.com\\/venturecafe","user_portrait_small":"http:\\/\\/b.vimeocdn.com\\/ps\\/605\\/605070_30.jpg","user_portrait_medium":"http:\\/\\/b.vimeocdn.com\\/ps\\/605\\/605070_75.jpg","user_portrait_large":"http:\\/\\/b.vimeocdn.com\\/ps\\/605\\/605070_100.jpg","user_portrait_huge":"http:\\/\\/b.vimeocdn.com\\/ps\\/605\\/605070_300.jpg","stats_number_of_likes":0,"stats_number_of_plays":43,"stats_number_of_comments":0,"duration":531,"width":640,"height":360,"tags":"startup stories, entrepreneurship, interview, Venture Cafe, jobs","embed_privacy":"anywhere"}]'
>>> loaded_content = json.loads(content_string)
>>> type(content_string)
<type 'str'>
>>> type(loaded_content)
<type 'list'>
...