昨天想试一下豆瓣的 API ,发现相册 API 是需要登录后才可以访问的,于是用 requests.session 去登陆,然后再 get 相册,但是还是相应找不到资源。求指教。
import requests
s = requests.Session()
r = s.post('https://accounts.douban.com/login', data={'form_email':'[email protected]', 'form_password':'xxxx'})
p = s.get(''https://api.douban.com/v2/photo/:74539453')
print p.content
输出:
{"msg":"uri_not_found","code":1001,"request":"GET \/v2\/photo\/:74539453"}
补充:我从 r.content 里面有看到我的账号信息,因此我判断是登录成功了。
1
feather12315 2016-03-13 12:50:58 +08:00 via Android
放弃 API 吧,直接爬
|
2
cheerzeng OP @feather12315 有想过,就是想先弄明白这个原因,看有没有知道的
|
3
Caratpine 2016-03-13 13:03:17 +08:00 via iPhone
api 请求的 url 写错了,冒号去掉试试
|
4
just1 2016-03-13 13:09:46 +08:00 via Android
遇到过类似情况,后来改用 httplib2
|
5
cheerzeng OP |
6
cheerzeng OP @just1 我以前用过 urllib2 ,然后看到有人建议用 requests 才用的,这也太难以接受了
|
10
cheerzeng OP @Jaylee API 首页就有写,我没看到,真是罪过。
话说, API 有一些限制,然后我直接用用 http get, 我一直在下一个相册的照片,但是到了某一个照片的时候就回复验证码的页面了,然后失败。 一开始我以为是被判断出来时机器登录,但是我换成其他相册,脚本再跑又是可以的,换回去原来的相册的同一个照片,还是有验证码返回(同一个相册的过几张照片,也还能继续下载),不知道这是什么机制?? |
12
cheerzeng OP @Jaylee 但是我退出脚本,然后从另外一个照片 id 继续跑,又是可以的,稍微跑一下再试原来的那个照片 id ,又不行,想不出是什么原因
|
13
armstrong 2016-03-14 14:11:05 +08:00
会不会是你没有修改 user-agent ?
|
14
cheerzeng OP @armstrong 标题那个原因找到了,就是冒号,忘记改内容了,现在就是关于特定照片 id 会失败的问题
|
15
labuboco 2018-06-24 21:42:10 +08:00
比较好奇。请问您这个登录方式可以获取 设置为私人的相册 的图片嘛?
|