用登录抓取

时间:2017-05-02 03:47:27

标签: python web-scraping python-requests

我尝试使用python-requests登录网站,但似乎无法使用以下代码登录:

import requests

session = requests.Session()
data = {'j_username': 'name@gmail.com'}
session.post('http://www.broadinstitute.org/gsea/login.jsp', data=data)
r = session.get('http://www.broadinstitute.org/gsea/msigdb/genesets.jsp?
collection=CP:BIOCARTA')
print(r.content)

我不相信我在这里做错了什么,因为我在网上关注了一些帖子。

2 个答案:

答案 0 :(得分:0)

登录页面中有一个隐藏的输入字段,即'j_password',其值为常量'password'。你不应该发布到login.jsp,但发布到该网址:http://software.broadinstitute.org/gsea/j_spring_security_check

import requests

session = requests.Session()
data = {'j_username': 'name@gmail.com', 'j_password': 'password'}
session.post('http://software.broadinstitute.org/gsea/j_spring_security_check', data=data)
r = session.get('http://www.broadinstitute.org/gsea/msigdb/genesets.jsp?collection=CP:BIOCARTA')
print(r.content)

我使用名为Fiddler的程序来帮助我了解后台会发生什么。这真的很有帮助!

答案 1 :(得分:0)

找出它需要什么的最好方法是打开调试器控制台并单击网络选项卡,看看当您填写电子邮件并单击登录时会发生什么。是的它只需要电子邮件,但在内部它也发送另一个参数。

请参阅:您可以看到您需要的参数和名称: enter image description here 你需要通过: j_username和j_password:'密码' 其中j_username是您输入的用户名。

另一个问题是: 你的帖子请求应该在这里传递数据: 的 http://software.broadinstitute.org/gsea/j_spring_security_check

enter image description here

IT看起来你不知道如何使用检查元素。所有图像都来自检查窗口。使用