2016-04-26 88 views
0

我想获取网站'https://xxxxxx/login.htmx'的内容。在HTML代码中有一个JS脚本是这样的:Python - 使用Javascript登录表单

<script language="javascript">$(document).ready(function() { 
$('#BTN_ACCEDI').linkbutton({plain:false}); 
$('#BTN_ACCEDI').click(function(){customSubmitLogin();}); 
$('#j_password').validatebox({required:true,validType:'length[1,80]' }); 
$('#j_username').validatebox({required:true,validType:'length[1,80]'});  
$('#imp_num').validatebox({required:true,validType:'length[1,5]'});  
$('#j_username').focus(); 
});</script> 

搜索,所以我已经发现了一些线索,把我带到这个:

payload = {'j_username':'______', 
     'j_password':'______', 
     'imp_num':'_____'} 
url = 'https://xxxx/login.htmx' 
s = requests.Session() 
r = s.post(url, data=payload) 

但是当我尝试r.text它给了我原始的html页面,而不是登录后的页面。
你能帮我吗?知道成功登录后的URL是否相同有用吗?

+0

请提供一个最小的,但工作的例子。 – linusg

+0

对不起,我不明白你的工作示例是什么意思。 使用我提供的代码,我无法提取html内容。我可以添加什么? –

+0

我的意思是进口等。如果您使用的'requests.Session()'来自标准库或不是! – linusg

回答

0

你需要更多的表单数据:

import requests 

data = {"dispatch": "toWelcomePage", 
     "j_username": "username", 
     "j_password": "youpass", 
     "imp_num": "num", 
     "enteSel": "num"} 
with requests.session() as s: 
    r = s.post("https://www.sic.ania.it/login.htmx", data=data) 

如果你看看打开了开发工具,你可以看到,当你在浏览器提交什么获取发布:

enter image description here

+0

什么是“dispatch”表单?我应该写下什么? –

+1

所有你需要添加自己的是最后四个值 –

+0

可悲的是它不会改变任何东西。当我输入'r.text'时,它总是显示相同的html页面。 –