一个豆瓣API的使用——拒绝思维定式
好久没写博客了,最近一直在用豆瓣API爬数据,不知道以前的是什么样,毕竟刚开始用没多久,就用最新的V2版本,以前的不更新了,可以参照https://developers.douban.com/wiki/?title=api_v2,但是在用某些API的时候会出一些问题,需要自己琢磨琢磨,因为网上关于API爬数据的资料并不多,今天就聊一些豆瓣同城V2的一个接口的调用——获取活动列表。
根据豆瓣同城V2提供的接口,获取活动列表:GET https://api.douban.com/v2/event/list,返回值是eventlist,其格式可以自己查询,我们试一下:
try:
html = urllib2.urlopen(r'https://api.douban.com/v2/event/list')
except Exception as ex:
print ex
hjson = json.loads(html.read())
eventlist(hjson)
这是主要代码,eventlist是定义的一个函数,输出活动列表,运行一下,出错,400bad request,还是不知道什么原因,从网页上跳一下https://api.douban.com/v2/event/list,得到一个文件,用浏览器打开,显示信息为
{"msg":"invalid_parameter","code":1016,"request":"GET \/v2\/event\/list"}
,参数错误,我的天哪,什么鬼,不是按照API说的做了吗,怎么出错了?难道获取列表的不能用?试一下获取城市列表:
try:
html = urllib2.urlopen(r'https://api.douban.com/v2/loc/list')
except Exception as ex:
print ex hjson = json.loads(html.read())
city_print(hjson)
city_print为定义的输出城市列表的函数,运行一下,完美输出,兄弟,蒙了吧。到底什么原因呢,百度一下,毫无进展,要不Google一下(呵呵),还得靠自己。从源头找找思路,打开豆瓣,进去同城子模块,发现左上角显示你的所在地,脑子闪过一个念头:会不会是获取的时候要指定地名?马上试试,但是怎么指定地名呢,想想前几天爬豆瓣电影top250的时候有个start参数,这样是不是也管用,管用的话用哪个词呢。在看获取城市列表的接口,是loc/list,那指定地名也用这个试试,说干就干:
try:
html = urllib2.urlopen(r'https://api.douban.com/v2/event/list?loc=qingdao') except Exception as ex:
print ex
hjson = json.loads(html.read())
eventlist(hjson)
因为我在青岛,就把地名指定为青岛,运行一下,简单看一些数据:
-----------------------
owner_name: 良友书坊文化机构
owner_uid: liangyoubooks
owner_id: 121533
id: 26343442
begin_time: 2016-03-06 10:00:00
end_time: 2016-05-04 22:00:00
address: 青岛 市南区 香港中路沿线 澳门路117号海信广场B1层 良友书坊•有度空间
----------------------
owner_name: 我爱户外
owner_uid: 128609
owner_id: 128609
id: 26248720
begin_time: 2016-02-21 08:30:00
end_time: 2016-05-15 16:00:00
address: 青岛 崂山区 沙子口广场
----------------------
owner_name: 摄影师贾葭
owner_uid: LifephotoJia
owner_id: 103740178
id: 25637123
begin_time: 2016-04-17 08:00:00
end_time: 2016-07-15 17:00:00
address: 青岛 市南区 湛山/太平角 适合拍摄的任意地点
----------------------
完美!遇到问题自己解决的感觉就一个字——爽!完整代码也贴出来吧,写的有点拙劣,大神勿看。
#---coding:utf-8---
"""
Date: 2016-4-17
Language: Python2.7.6
by seven_clear
""" import json
import urllib2
import string def eventlist(json):
'输出活动列表'
print 'count:',json['count']
print 'total:',json['total']
print '-----------------------'
for event in json['events']:
print 'owner_name:',event['owner']['name']
print 'owner_uid:',event['owner']['uid']
print 'owner_id:',event['owner']['id']
print 'id:',event['id']
#print 'content:',event['content']
print 'begin_time:',event['begin_time']
print 'end_time:',event['end_time']
print 'address:',event['address']
print '----------------------' def city_print(json):
'输出城市列表'
print 'count:',json['count']
print 'total:',json['total']
print '----------------------------'
for city in json['locs']:
print 'parent:',city['parent']
print 'id:',city['id']
print 'name:',city['name']
print 'uid:',city['uid']
print '----------------------------' try:
html = urllib2.urlopen(r'https://api.douban.com/v2/event/list?loc=qingdao')
#https://api.douban.com/v2/loc/list') except Exception as ex:
print ex
#print html.read() hjson = json.loads(html.read())
eventlist(hjson)
#city_print(hjson) for key in hjson:#测试json格式
print key
一个豆瓣API的使用——拒绝思维定式的更多相关文章
- 一个豆瓣 API 的反向代理配置,旨在解决豆瓣屏蔽小程序请求问题(豆瓣接口 403 问题)
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #erro ...
- 《云阅》一个仿网易云音乐UI,使用Gank.Io及豆瓣Api开发的开源项目
CloudReader 一款基于网易云音乐UI,使用GankIo及豆瓣api开发的符合Google Material Desgin阅读类的开源项目.项目采取的是Retrofit + RxJava + ...
- 瓣呀,一个基于豆瓣api仿网易云音乐的开源项目
整体采用material design 风格,本人是网易云音乐的粉丝,所以界面模仿了网页云音乐,另外,项目中尽量使用了5.0之后的新控件. 项目整体采用mvp+rxjava+retrofit 框架,使 ...
- 使用OAuth2.0访问豆瓣API
如何计算某个用户的access_token过期时间?开发者可以通过两种方式计算:用户授权时,oauth2/access_token接口返回的expires_in值就是access_token的生命周期 ...
- 小试牛刀--利用豆瓣API爬取豆瓣电影top250
最近得赶进度爬点东西,对于豆瓣,它为开发者提供了API,目前是v2版本,目前key不对个人开放,但是可以正常通过其提供的API获取数据.豆瓣V2版API权限分3类:公开.高级.商务,我们用开放基本数据 ...
- 【jquery mobile笔记二】jquery mobile调用豆瓣api示例
页面主要代码如下 <div data-role="page" id="page1"> <div data-role="hea ...
- 豆瓣api之OAuth认证
豆瓣api通过OAuth允许第三方应用访问用户数据,所以OAuth认证就是我们整个project的基础了. OAuth认证听起来挺神秘,其实挺简单的. 现在的大型网站的开放平台的认证几乎都是采用OAu ...
- 基于vue2.0的一个豆瓣电影App
1.搭建项目框架 使用vue-cli 没安装的需要先安装 npm intall -g vue-cli 使用vue-cli生成项目框架 vue init webpack-simple vue-movie ...
- 基于Bootstrap+angular的一个豆瓣电影app
1.搭建项目框架 npm初始化项目 npm init -y //按默认配置初始化项目 安装需要的第三方库 npm install bootstrap angular angular-route --s ...
随机推荐
- nagios二次开发(三)---nagiosql架构简介
NAGIOSQL数据库结构简介 个人觉得如果了解一个系统的架构,应该先从数据库着手,因为数据库是灵魂,当然前提是这个系统用到了数据库.刚才说到了架构,其实我还真不知架构到底是个什么东东,也不知第一句话 ...
- varchar(n),nvarchar(n) 长度、性能、及所占空间的说明
varchar(n),nvarchar(n) 中的n怎么解释: nvarchar(n)最多能存n个字符,不区分中英文. varchar(n)最多能存n个字节,一个中文是两个字节. 所占空间: nvar ...
- transform初学习
1.什么是transform? transform主要用于形变,位移和旋转,可用于动画. p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: jus ...
- JS中this的指向问题
JS中this的定义:this对象是在运行时基于函数的执行环境绑定的(通俗点来说就是:this代表当前函数属于哪个对象). this一般情况下都代表的是global对象,在浏览器中就是window对象 ...
- 转载:Solr的自动完成实现方式(第三部分:Suggester方式续)
转自:http://www.cnblogs.com/ibook360/archive/2011/11/30/2269126.html 在之前的两个部分(part1.part2)中,我们学会了如何配置和 ...
- ubuntu 双线双网卡双IP实现方式
昨天金桥机房上架了一台多玩的测试机,系统是ubuntu9.04 X64的系统,母机IBM X336机器.用户需求是双线,故采用一个网卡配置电信地址,另一个网卡配置联通地址,安装好系统后配置好IP发现联 ...
- 初学c# -- 学习笔记(五) winfrom无边框四周阴影
刚用到这个功能,网上扯淡的东西太多了,都是2边阴影,还什么窗口叠加.ps作图啥的,什么玩意.还是老外实在,google找的,无边框窗体,四边透明阴影. public partial class For ...
- Hibernate SQL查询 addScalar()或addEntity()
本文完全引用自: http://www.cnblogs.com/chenyixue/p/5601285.html Hibernate除了支持HQL查询外,还支持原生SQL查询. 对原 ...
- Git学习(一)——Git介绍与安装
一.Git诞生 Linus在1991年创建了Linux,从此,Linux系统不断发展,成为最大的服务器系统软件. 2005年,Linus用C编写了一个分布式版本控制工具--Git. 二.集中式vs分布 ...
- SQL基本语句以及示例
基本语句: /*dorp colunm*/ 语法:ALTER TABLE 表名 DROP COLUMN 要删除的字段 验证财务转换的正确性,查询以下两个表是否有数据 /*表连接inner jion ...