你如何在Python中请求IMDB API?

时间:2016-04-09 06:39:55

标签: python json api parsing dictionary

如何在此API上提交请求:http://www.omdbapi.com/

我正在尝试使用来自IMDB的数据构建电子表格,例如标题,年份,预算,票房和流派。如何使用Python中的API获取此信息?我假设数据将是JSON,我如何解析它然后拉出我想要的信息?

1 个答案:

答案 0 :(得分:2)

我已经成功地使用过Flask几次。使用框架可以轻松实现,因为所有工具都已组合在一起。您可以阅读more about Flask here.

但是,如果您习惯使用更加手动的方法,则可以同时使用python jsonrequests模块访问RESTful API,绝对没问题。

示例可能如下所示:

import json, requests

url = 'http://example.com/endpoint/'

parameters = dict(
    field1='some value',
    field2='another value',
    field3='yet another value',
)

resp = requests.get(url=url, params=parameters)
data = json.loads(resp.text)
print data

修改

仔细观察这个问题,我才意识到使用IMDB API比我想象的要容易得多,你只需要发送一个你感兴趣的参数的GET请求。一个实际的工作示例,与它进行通信以获取有关电影"尖叫"如下:

import json, requests
url = "http://www.omdbapi.com/?t=scream"
response = requests.get(url)
python_dictionary_values = json.loads(response.text)

最后一行采用响应中返回的json并将其转换为Python词典,然后您可以随意使用它。

如果您想通过文件输入多次这样做,您当然可以这样做。我的例子假设你有一个换行符分隔文件,你要搜索的所有电影都没有空格(如果你需要处理空格,你需要在URL中正确编码它们 - 否则我提供的代码会破坏)。 / p>

movies = {}
import json, requests
baseurl = "http://omdbapi.com/?t=" #only submitting the title parameter
with open("movies.txt", "r") as fin:
     for line in fin:
         movieTitle = line.rstrip("\n") # get rid of newline characters
         response = requests.get(url + movieTitle)
         if response.status_code == 200:
              movies[movieTitle] = json.loads(response.text)
         else:
              raise ValueError("Bad request!")
print movies['scream']