最近在学习python,想要用python爬一点Github上的数据
可是第一步模拟登陆就失败了
能请各位看看是什么问题么?
https://gist.github.com/SakuraSa/36ddbfc4ffb331eb2eae
环境:
python==2.7
BeautifulSoup==3.2.1
requests==2.4.0
1
keithellis 2014-09-23 20:51:38 +08:00
csrf-token
|
2
kslr 2014-09-23 20:56:08 +08:00
@keithellis 和我上一个头像是一样的。
|
3
SakuraSa OP |
4
keithellis 2014-09-23 21:03:46 +08:00
先访问 https://github.com/login
取出 <input name="authenticity_token" type="hidden" value="mMDKe49Tbw7EEaPHkiQHdCngXvRt7QWKAOPn/AQrgmbYJBZqNETMq6thgWSXvusWvPje+zzrzpXR6pX7aq+uTA==" /> 中 authenticity_token 的值。 |
5
SakuraSa OP 嗯,这个值在代码中已经取出了
这是当前代码的 payload 的值: {'password': 'password', u'utf8': u'\u2713', 'login': 'username', u'commit': u'Sign in', u'authenticity_token': u'4+XkNAr6ZmwCakFtTT8I/+mSowYHW4OfFGYlOMnDMN05a1taSwKicHTQ4KdR5XDM0k0WwHLEcx/B+IEtQyZUpQ=='} |
6
keithellis 2014-09-23 21:12:26 +08:00
u'utf8': u'\u2713' 可以不要
|
7
SakuraSa OP @keithellis
结果还是不行的样子,不论加不加 u'utf8': u'\u2713' |
8
oott123 2014-09-23 21:20:02 +08:00
诶,GitHub 有 API 的呀,没必要自己模拟嘛,多麻烦。
https://developer.github.com/v3/ |
9
SakuraSa OP |
10
keithellis 2014-09-23 21:23:29 +08:00
@SakuraSa POST 到 https://github.com/session 这个 URL。
|
11
SakuraSa OP @keithellis
rsp = session.post('https://github.com/session', data=payload, headers=headers) 的确是post到这个地址的…… |
12
keithellis 2014-09-23 21:30:18 +08:00
|
13
SakuraSa OP 我也得到了200的代码
但是并没有得到cookie 正确的cookie应该有: logged_in=yes user_session=xxxxxxxx 但是我的返回结果中没有(而且从内容看,似乎返回了首页的内容 |
14
SakuraSa OP @keithellis
摸不到头绪,哪里错了呢 (✖﹏✖)↷ |
15
keithellis 2014-09-23 22:01:34 +08:00
|
16
keithellis 2014-09-23 22:07:46 +08:00
|
17
SakuraSa OP @keithellis
是的呢,我也得到了同样的页面,状态200 但是似乎没有得到cookie 我把您例子的代码最后稍作修改: https://gist.github.com/SakuraSa/3f1095cb0e98e6a0c59c 结果是这样的: <Cookie logged_in=no for .github.com/> <Cookie _gh_sess=eyJsYXN0X3dyaXRlIjoxNDExNDgxNjIxNzUxLCJzZXNzaW9uX2lkIjoiZWZiYWMzYzcyNjdkMTg5NDMwY2IxYTEwZTQ5MWM3NTIiLCJfY3NyZl90b2tlbiI6IjBNV0JEbkIxZWhuaUsrb3NmVndFTGk2MGpMTmFtbVRjUWVnYXptYlVZbUk9In0%3D--cf3681efff227b7b20789487548f5609b492f320 for github.com/> -------------------- logged_in: no [Finished in 5.1s] 似乎是没有登陆成功呢(顺请教一下,如何贴gist的代码呢? |
18
keithellis 2014-09-23 22:34:19 +08:00
@SakuraSa 不好意思,多问一句,有替换 USER = 'USER' 和 PASSWORD = 'PASSWORD'为自己的用户名和密码吗。
|
19
keithellis 2014-09-23 22:35:49 +08:00
@SakuraSa 我就忘记替换了!
|
20
SakuraSa OP @keithellis
的确很容易忘记呢,一开始我也忘记过(还差点把自己的账户贴出去了…… 但是,现在这几次我没忘记呢 <a href="http://imgur.com/97TmB6o"><img src="?2" title="Hosted by imgur.com" /></a> |
21
keithellis 2014-09-23 22:52:51 +08:00 1
@SakuraSa ![Imgur]() 我无能为力了。
|
22
Esay 2014-09-23 23:00:25 +08:00
如果登陆的过程有很多 Javascript 代码,推荐 phantomjs
|
23
sandtears 2014-09-24 10:04:50 +08:00
貌似 Github 是有官方 API 的。。。
|
24
dingyaguang117 2014-09-24 10:51:49 +08:00
|
25
SakuraSa OP @keithellis
谢谢帮助 我发现似乎并不是登陆代码的问题,情况有点奇怪 同样的代码我在宿舍可以正常登陆,但在实验室的网络就不行(之前都是在实验室测试的 在隔壁的服务器上也可以登录(偷偷借用了一下…… ?1 您知道,像我这样的情况可能是什么问题么? |