前言
在Tumblr上面看到不少想要保存的美图,就想写一个爬虫来自动爬取。研究了一番Tumblr的API,发现可以稍加修改就达到这个目的。在此对Tumblr的API稍加整理,以备不时之需。
Tumblr API
Tumblr提供了一套功能强大的API,可以直接通过web请求,同时也提供了多种语言的客户端。
API地址是https://www.tumblr.com/docs/en/api/v2
。此地址包含了API的文档,可供开发使用。
注册Tumblr应用
使用API的第一步是注册一个Tumblr应用。
可以直接使用https://www.tumblr.com/oauth/apps
注册,也可以通过API网站提供的入口注册。注册之后保存好 Secret Key
以及 OAuth ConsumerKey
用于鉴权。
Console
API Console是Tumblr提供的一个Web客户端,可以通过此客户端来直接演示代码,并查看代码结果。
使用Console需要提供之前保存的 Secret Key
和 OAuth ConsumerKey
。
发送请求
登录之后就可以使用Console提供的各种功能,以Posts为例,在页面上方填入相应的参数,下方就会给出示例代码。例如,想要查看Tumblr官方博客发布的帖子,为了限制返回长度,请求的帖子数目限定为一个。示例代码,以JAVA
为例:
// 使用Oauth验证
JumblrClient client = new JumblrClient(
"xxx",
"xxx"
);
client.setToken(
"xxx",
"xxx"
);
// Make the request
Map<String, Object> params = new HashMap<String, Object>();
params.put("limit", 1);
List<Post> posts = client.blogPosts("guanbo.tumblr.com", params);
确认参数无误后,点击 EXAMPLE OUTPUT
按钮,即可查看输出结果。
查看结果
Console输出的结果以json
格式保存,不过各种语言的客户端已经对返回结果做了一定的封装。
其中response
字段中保存的是请求的响应。其中blog
字段中存储当前博客的一些信息。
完整的样例如下:
```json
{
"meta": {
"status": 200,
"msg": "OK"
},
"response": {
"blog": {
"title": "Tumblr 官方博客",
"name": "guanbo",
"total_posts": 251,
"posts": 251,
"url": "http://guanbo.tumblr.com/",
"updated": 1460430035,
"description": "<a href=\"http://www.tumblr.com\">Tumblr</a> 团队发出的官方消息",
"is_nsfw": false,
"ask": false,
"ask_page_title": "Ask me anything",
"ask_anon": false,
"share_likes": false
},
"posts": [
{
"blog_name": "guanbo",
"id": 142664895706,
"post_url": "http://guanbo.tumblr.com/post/142664895706/一树樱花-jejumuses-带给我们更多的感悟",
"slug": "一树樱花-jejumuses-带给我们更多的感悟",
"type": "photo",
"date": "2016-04-12 03:00:34 GMT",
"timestamp": 1460430034,
"state": "published",
"format": "html",
"reblog_key": "D6m8wLws",
"tags": [
"博客推荐"
],
"short_url": "https://tmblr.co/ZXmTyl24tVOpQ",
"summary": "一树樱花, @jejumuses 带给我们更多的感悟。",
"recommended_source": null,
"recommended_color": null,
"highlighted": [],
"note_count": 114,
"caption": "<p>一树樱花, <a></a><a href=\"https://tmblr.co/m0tl9PX8vqo1IpaIV-oc5Kg\">@jejumuses</a> 带给我们更多的感悟。</p>",
"reblog": {
"tree_html": "",
"comment": "<p>一树樱花, <a></a><a href=\"https://tmblr.co/m0tl9PX8vqo1IpaIV-oc5Kg\">@jejumuses</a> 带给我们更多的感悟。</p>"
},
"trail": [
{
"blog": {
"name": "guanbo",
"active": true,
"theme": {
"header_full_width": 960,
"header_full_height": 539,
"header_focus_width": 959,
"header_focus_height": 538,
"avatar_shape": "square",
"background_color": "#37475c",
"body_font": "Helvetica Neue",
"header_bounds": "0,959,538,0",
"header_image": "https://secure.static.tumblr.com/5e0ea2e8a43e22ea901a478c0e57d12d/4ysxudq/T2Wnm0sr4/tumblr_static_6niqo4ucxnwogc8o4owosg08o.gif",
"header_image_focused": "https://secure.static.tumblr.com/5e0ea2e8a43e22ea901a478c0e57d12d/4ysxudq/MaNnm0sr8/tumblr_static_tumblr_static_6niqo4ucxnwogc8o4owosg08o_focused_v3.gif",
"header_image_scaled": "https://secure.static.tumblr.com/5e0ea2e8a43e22ea901a478c0e57d12d/4ysxudq/T2Wnm0sr4/tumblr_static_6niqo4ucxnwogc8o4owosg08o_2048_v2.gif",
"header_stretch": true,
"link_color": "#56BC8A",
"show_avatar": false,
"show_description": true,
"show_header_image": true,
"show_title": true,
"title_color": "#FFFFFF",
"title_font": "Gibson",
"title_font_weight": "bold"
},
"share_likes": false,
"share_following": false
},
"post": {
"id": "142664895706"
},
"content_raw": "<p>一树樱花, <a></a><a href=\"https://tmblr.co/m0tl9PX8vqo1IpaIV-oc5Kg\">@jejumuses</a> 带给我们更多的感悟。</p>",
"content": "<p>一树樱花, <a></a><a href=\"https://tmblr.co/m0tl9PX8vqo1IpaIV-oc5Kg\">@jejumuses</a> 带给我们更多的感悟。</p>",
"is_current_item": true
}
],
"image_permalink": "http://guanbo.tumblr.com/image/142664895706",
"photos": [
{
"caption": "",
"alt_sizes": [
{
"url": "https://40.media.tumblr.com/605a1b14b3cd8712dd02668192809067/tumblr_o560ui2sMK1utbg1co1_1280.jpg",
"width": 843,
"height": 1054
},
{
"url": "https://40.media.tumblr.com/605a1b14b3cd8712dd02668192809067/tumblr_o560ui2sMK1utbg1co1_500.jpg",
"width": 500,
"height": 625
},
{
"url": "https://40.media.tumblr.com/605a1b14b3cd8712dd02668192809067/tumblr_o560ui2sMK1utbg1co1_400.jpg",
"width": 400,
"height": 500
},
{
"url": "https://41.media.tumblr.com/605a1b14b3cd8712dd02668192809067/tumblr_o560ui2sMK1utbg1co1_250.jpg",
"width": 250,
"height": 313
},
{
"url": "https://41.media.tumblr.com/605a1b14b3cd8712dd02668192809067/tumblr_o560ui2sMK1utbg1co1_100.jpg",
"width": 100,
"height": 125
},
{
"url": "https://40.media.tumblr.com/605a1b14b3cd8712dd02668192809067/tumblr_o560ui2sMK1utbg1co1_75sq.jpg",
"width": 75,
"height": 75
}
],
"original_size": {
"url": "https://40.media.tumblr.com/605a1b14b3cd8712dd02668192809067/tumblr_o560ui2sMK1utbg1co1_1280.jpg",
"width": 843,
"height": 1054
}
}
]
}
],
"total_posts": 251
}
}