2016-04-26 40 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頁面。 –