豆瓣提供了豆瓣开发者服务,通过其提供的豆瓣电影api v2我们可以快速抓取大量信息。
可以看到提供的接口为GET /v2/movie/top250
,即调用为http://api.douban.com/v2/movie/top250
,输入浏览器可以看到返回一个json,调用参数包含start和count,默认为0和10,使用get方式,因此放在url中,例如http://api.douban.com/v2/movie/top250?start=25&count=25
返回第26-50条信息。
所以我们可以每次获取25个,共计10次即可获得全部信息。
使用的库如下
-
requests 库,可使用
pip install requests
安装,官方文档也很详尽。 -
time 库,内置,使用sleep暂停,防止频率太高被封ip
-
pymongo 库,用于操作MongoDB存储数据,可见我的往期文章 MongoDB 安装与配置 pymongo 安装与使用
代码如下
# coding utf-8
import requests
from time import sleep
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.movie_test
collection = db.top_api
url = 'http://api.douban.com/v2/movie/top250'
for start in range(0, 250, 25):
r = requests.get(url, params={'start': start, 'count': 25})
print 'processing %s' % r.url
res = r.json() # return dict
for movie in res['subjects']:
collection.insert_one(movie)
print movie['title'], 'saved'
sleep(0.1)
这样短短十几行程序即可获取数据并存入数据库中,以后可以进一步进行分析。
网友评论