如何用python获取电影
其实在实际操作中,根本不需要爬虫,简单的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
接下来,喝杯茶,看看你的程序是怎么运行的!