如何在此API上提交请求:http://www.omdbapi.com/
我正在尝试使用来自IMDB的数据构建电子表格,例如标题,年份,预算,票房和流派。如何使用Python中的API获取此信息?我假设数据将是JSON,我如何解析它然后拉出我想要的信息?
答案 0 :(得分:2)
我已经成功地使用过Flask几次。使用框架可以轻松实现,因为所有工具都已组合在一起。您可以阅读more about Flask here.
但是,如果您习惯使用更加手动的方法,则可以同时使用python json
和requests
模块访问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']