小试牛刀--利用豆瓣API爬取豆瓣电影top250

时间:2023-01-01 06:19:13

最近得赶进度爬点东西,对于豆瓣,它为开发者提供了API,目前是v2版本,目前key不对个人开放,但是可以正常通过其提供的API获取数据。豆瓣V2版API权限分3类:公开、高级、商务,我们用开放基本数据接口,一般个人爱好者自建网站或应用都能满足的公开权限。

还有一点,豆瓣API返回值为json,所谓JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。[转自网络]具体用法可以参考Python文档,这里看一下json与Python对应的数据类型:

Performs the following translations in decoding by default(转换为Python时):

Json Python
object dict
array list
string unicode
number (int) int, long
number (real) float
true True
false False
null None

Supports the following objects and types by default(从Python转为JSON):

Python JSON
dict object
list, tuple array
str, unicode string
int, long, float number
True true
False false
None null

豆瓣API用法可以参考https://developers.douban.com/,有很多API,我们用电影的做个测试,上代码:

#---coding:utf-8---
import urllib2
import json
import string#后面处理页要用到 html = r'https://api.douban.com/v2/movie/top250?start={page}'
#html = urllib2.urlopen(r'https://api.douban.com/v2/movie/top250?start=') print 'begin...'
i = 1
p = 1
while p <=5:
#print '=====START PAGE:',(p-1)*20
#每次获取一页
try:
hjson = json.loads(urllib2.urlopen(html.format(page=(p-1)*20)).read())
except Exception as e:
print e
#处理json,具体返回样例参照豆瓣API即可,输出格式: 排行:电影中文名---英文名(年代)
for key in hjson['subjects']:
print i,':',key['title'],'--'\
,key['original_title'],'(',key['year'],')'
i+=1
p+=1 print 'over!'

用API多简单,这里说一下,每次获取一页只有20条,目前还没搞定怎么获取多点,只好用了个循环的笨法子,这里只爬了前100测试一下,还有就是发现好多库2.x可以用3.x不能用,于是就有装了个2.7,其实并不冲突(2.7.10往后有冲突,装不上,以前的版本没试,我的版本是2.7.6),只要在环境变量配置的时候把2.x放前面就会用2.x,用pycharm的时候还不会怎么选2.x和3.x,感觉和eclipse选Tom cat差不多,回来搞一搞。好了,我们运行看一下(在原生IDE就能看到结果,就不截图了,其实也可以写到一个.TXT里面):
>>>
begin...
1 : 肖申克的救赎 -- The Shawshank Redemption ( 1994 )
2 : 这个杀手不太冷 -- Léon ( 1994 )
3 : 阿甘正传 -- Forrest Gump ( 1994 )
4 : 霸王别姬 -- 霸王别姬 ( 1993 )
5 : 美丽人生 -- La vita è bella ( 1997 )
6 : 千与千寻 -- 千と千尋の神隠し ( 2001 )
7 : 辛德勒的名单 -- Schindler's List ( 1993 )
8 : 海上钢琴师 -- La leggenda del pianista sull'oceano ( 1998 )
9 : 机器人总动员 -- WALL·E ( 2008 )
10 : 盗梦空间 -- Inception ( 2010 )
11 : 泰坦尼克号 -- Titanic ( 1997 )
12 : 三傻大闹宝莱坞 -- 3 Idiots ( 2009 )
13 : 放牛班的春天 -- Les choristes ( 2004 )
14 : 忠犬八公的故事 -- Hachi: A Dog's Tale ( 2009 )
15 : 龙猫 -- となりのトトロ ( 1988 )
16 : 大话西游之大圣娶亲 -- 西遊記大結局之仙履奇緣 ( 1995 )
17 : 教父 -- The Godfather ( 1972 )
18 : 乱世佳人 -- Gone with the Wind ( 1939 )
19 : 天堂电影院 -- Nuovo Cinema Paradiso ( 1988 )
20 : 当幸福来敲门 -- The Pursuit of Happyness ( 2006 )
21 : 搏击俱乐部 -- Fight Club ( 1999 )
22 : 楚门的世界 -- The Truman Show ( 1998 )
23 : 触不可及 -- Intouchables ( 2011 )
24 : 指环王3:王者无敌 -- The Lord of the Rings: The Return of the King ( 2003 )
25 : 罗马假日 -- Roman Holiday ( 1953 )
26 : 十二怒汉 -- 12 Angry Men ( 1957 )
27 : 两杆大烟枪 -- Lock, Stock and Two Smoking Barrels ( 1998 )
28 : 天空之城 -- 天空の城ラピュタ ( 1986 )
29 : 怦然心动 -- Flipped ( 2010 )
30 : 海豚湾 -- The Cove ( 2009 )
31 : 飞屋环游记 -- Up ( 2009 )
32 : 大话西游之月光宝盒 -- 西遊記第壹佰零壹回之月光寶盒 ( 1995 )
33 : 飞越疯人院 -- One Flew Over the Cuckoo's Nest ( 1975 )
34 : 无间道 -- 無間道 ( 2002 )
35 : 鬼子来了 -- 鬼子来了 ( 2000 )
36 : 窃听风暴 -- Das Leben der Anderen ( 2006 )
37 : 少年派的奇幻漂流 -- Life of Pi ( 2012 )
38 : 蝙蝠侠:黑暗骑士 -- The Dark Knight ( 2008 )
39 : V字仇杀队 -- V for Vendetta ( 2005 )
40 : 熔炉 -- 도가니 ( 2011 )
41 : 闻香识女人 -- Scent of a Woman ( 1992 )
42 : 天使爱美丽 -- Le fabuleux destin d'Amélie Poulain ( 2001 )
43 : 活着 -- 活着 ( 1994 )
44 : 美丽心灵 -- A Beautiful Mind ( 2001 )
45 : 指环王1:魔戒再现 -- The Lord of the Rings: The Fellowship of the Ring ( 2001 )
46 : 指环王2:双塔奇兵 -- The Lord of the Rings: The Two Towers ( 2002 )
47 : 教父2 -- The Godfather: Part Ⅱ ( 1974 )
48 : 哈尔的移动城堡 -- ハウルの動く城 ( 2004 )
49 : 七宗罪 -- Se7en ( 1995 )
50 : 情书 -- Love Letter ( 1995 )
51 : 勇敢的心 -- Braveheart ( 1995 )
52 : 剪刀手爱德华 -- Edward Scissorhands ( 1990 )
53 : 死亡诗社 -- Dead Poets Society ( 1989 )
54 : 美国往事 -- Once Upon a Time in America ( 1984 )
55 : 钢琴家 -- The Pianist ( 2002 )
56 : 致命魔术 -- The Prestige ( 2006 )
57 : 狮子王 -- The Lion King ( 1994 )
58 : 音乐之声 -- The Sound of Music ( 1965 )
59 : 被嫌弃的松子的一生 -- 嫌われ松子の一生 ( 2006 )
60 : 小鞋子 -- بچههای آسمان ( 1997 )
61 : 低俗小说 -- Pulp Fiction ( 1994 )
62 : 入殓师 -- おくりびと ( 2008 )
63 : 蝴蝶效应 -- The Butterfly Effect ( 2004 )
64 : 玛丽和马克思 -- Mary and Max ( 2009 )
65 : 沉默的羔羊 -- The Silence of the Lambs ( 1991 )
66 : 本杰明·巴顿奇事 -- The Curious Case of Benjamin Button ( 2008 )
67 : 星际穿越 -- Interstellar ( 2014 )
68 : 黑客帝国 -- The Matrix ( 1999 )
69 : 拯救大兵瑞恩 -- Saving Private Ryan ( 1998 )
70 : 第六感 -- The Sixth Sense ( 1999 )
71 : 大鱼 -- Big Fish ( 2003 )
72 : 射雕英雄传之东成西就 -- 射鵰英雄傳之東成西就 ( 1993 )
73 : 幽灵公主 -- もののけ姫 ( 1997 )
74 : 饮食男女 -- 飲食男女 ( 1994 )
75 : 让子弹飞 -- 让子弹飞 ( 2010 )
76 : 西西里的美丽传说 -- Malèna ( 2000 )
77 : 心灵捕手 -- Good Will Hunting ( 1997 )
78 : 阳光姐妹淘 -- 써니 ( 2011 )
79 : 阳光灿烂的日子 -- 阳光灿烂的日子 ( 1994 )
80 : 辩护人 -- 변호인 ( 2013 )
81 : 上帝之城 -- Cidade de Deus ( 2002 )
82 : 萤火虫之墓 -- 火垂るの墓 ( 1988 )
83 : 大闹天宫 -- 大闹天宫 ( 1961 )
84 : 重庆森林 -- 重慶森林 ( 1994 )
85 : 春光乍泄 -- 春光乍洩 ( 1997 )
86 : 致命ID -- Identity ( 2003 )
87 : 甜蜜蜜 -- 甜蜜蜜 ( 1996 )
88 : 禁闭岛 -- Shutter Island ( 2010 )
89 : 加勒比海盗 -- Pirates of the Caribbean: The Curse of the Black Pearl ( 2003 )
90 : 告白 -- 告白 ( 2010 )
91 : 爱在黎明破晓前 -- Before Sunrise ( 1995 )
92 : 阿凡达 -- Avatar ( 2009 )
93 : 风之谷 -- 風の谷のナウシカ ( 1984 )
94 : 一一 -- 一一 ( 2000 )
95 : 爱在日落黄昏时 -- Before Sunset ( 2004 )
96 : 海洋 -- Océans ( 2009 )
97 : 燃情岁月 -- Legends of the Fall ( 1994 )
98 : 驯龙高手 -- How to Train Your Dragon ( 2010 )
99 : 侧耳倾听 -- 耳をすませば ( 1995 )
100 : 控方证人 -- Witness for the Prosecution ( 1957 )
over!
>>>

这个简单的小程序就完成了,还有很多要改进的地方,不过既然开头了,以后都好说。豆瓣API返回值大部分都是json,所以用API爬数据时要注意对json的处理,返回的json格式API例子都有,搞一下就行,继续学习中。