如何用python获取电影

在此期间,实验室要收集电影信息,给出了一个很大的数据集,包含了4000多个电影名称。我需要写一个爬虫来抓取电影名称对应的电影信息。

其实在实际操作中,根本不需要爬虫,简单的Python基础就可以了。

预需求:

Python3语法基础

HTTP网络基金会

===================================

第一步是确定API的提供者。IMDb是最大的电影数据库。相比之下,有一个OMDb网站提供API使用。这个网站的API非常友好,易于使用。

第二步,确定网站的格式。

第三步是理解如何使用基本的请求库。

为什么应该使用Requests而不是urllib.request?

因为这个Python库容易出现各种奇妙的问题,我受够了...

第四步,写Python代码。

我想做的是逐行读取文件,然后用那一行的电影名获取电影信息。因为源文件比较大,readlines()无法完整读取所有的电影名称,所以我们是逐行读取。

1导入请求2?3 for line in open(" movies . txt "):4s = line . split(' % 20 \ n ')5 urll = ' htd API . com/?t = '+s[0]7 result = requests . get(urll)8 if result:9 JSON = result . text 10 print(JSON)11 p = open(' result 0 . JSON ',' a')12?p . write(JSON)13 p . write(' \ n ')14 p . close()

我提前格式化了所有的电影片头文件,把所有空格都换成了“%20”,方便使用API(否则会报错)。这个功能可以用Visual Studio代码完成。

注意编码时选择GBK编码,否则会出现以下错误:

1 unicode decode错误:“gbk”编解码器无法解码位置0处的字节0xff:非法的多字节序列

第五步,做优化和异常处理。

主要做三件事,第一件事,控制API的速度,防止被服务器屏蔽;

第二,获取API密钥(甚至使用多个密钥)。

第三件事:异常处理。

1导入请求3?4 key=[''] 5?6 for line in open(" movies . txt "):7 try:8 #……9 except time out error:10 continue 11 except unicode encoder error:12 continue 13 except connection error:14继续

完整的代码发布在下面:

1 # -*-编码:utf-8 -*- 2?3导入请求4导入时间5?6 key=['xxxxx ',' yyyyy ',zzzzz ',' aaaaa ',' bbbbb'] 7 i=0 8?9 for line in open(" movies . txt "):10 try:11 I =(I+1)% 512s = line . split(' % 20 \ n ')13 urll = ' dbapi . com/?t = '+s[0]+' & amp;API key = '+key[I]14 result = requests . get(urll)15 if result:16 JSON = result . text 17 print(JSON)18 p = open(' result 0 . JSON ',' a')19?p . write(JSON)20 p . write(' \ n ')21?p . close()22 time . sleep(1)23 except time out错误:24 continue 25 except unicode encoder错误:26 continue27 except ConnectionError错误:28 continue

接下来,喝杯茶,看看你的程序是怎么运行的!