Twill submit函数不与表单一起工作

2024-05-20 18:21:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用twill为一个页面编写一个爬虫程序,它需要我登录。我可以填这张表。但是twill的submit()函数似乎没有“点击”按钮。在

Form name=fSSUser_Logon (#1)
## ## __Name__________________ __Type___ __ID________ __Value__________________
1     TFORM                    hidden    TFORM        SSUser.Logon 
2     TPAGID                   hidden    TPAGID       SRLpKQyn1yc8 
3     TEVENT                   hidden    TEVENT        
4     TXREFID                  hidden    TXREFID      2 
5     TOVERRIDE                hidden    TOVERRIDE     
6     TDIRTY                   hidden    TDIRTY       1 
7     TWKFL                    hidden    TWKFL         
8     TWKFLI                   hidden    TWKFLI        
9     TFRAME                   hidden    TFRAME        
10    TWKFLL                   hidden    TWKFLL        
11    TWKFLJ                   hidden    TWKFLJ        
12    TREPORT                  hidden    TREPORT       
13    TRELOADCMP               hidden    TRELOADCMP    
14    TRELOADID                hidden    TRELOADID    SRLpKQy1nyc7 
15    TOVERLAY                 hidden    TOVERLAY      
16    RELOGON                  hidden    RELOGON       
17    USERNAME                 text      USERNAME      
18    PASSWORD                 password  PASSWORD      
19    Logon                    button    Logon        Logon 

在上面的页面上显示表单()。在

按钮的实际代码如下:

^{pr2}$

它没有我能用的任何形式。在

目前我的代码:

from twill.commands import *
from twill import get_browser

go("https://trakcarelabwebview.nhls.ac.za/trakcarelab/csp/logon.csp")
showforms()

fv("1", "USERNAME", "xx")
fv("1", "PASSWORD", "xx")
fv("1", "Logon", "Logon")

formaction('Logon','https://trakcarelabwebview.nhls.ac.za/trakcarelab/csp/logon.csp#TRAK_main')
submit()
show()
showforms()

其中框架“TRAK_main”是我需要的HTML框架。 最后一个showforms()显示与“登录”之前完全相同的表单。在

我做错什么了?在


Tags: usernamepassword页面按钮hiddencspsubmitlogon
1条回答
网友
1楼 · 发布于 2024-05-20 18:21:16

What am I doing wrong here?

你的答案在这里:

twill does not understand javascript.

browser加载该页面时,该页面上的js将执行,js将onclick事件处理程序分配给登录按钮。然后,当单击“登录”按钮时,事件处理程序函数将设置其中一个隐藏表单字段的值。服务器在请求中检查该值,如果没有该值,则登录失败,服务器将重定向回登录页面。在

因为twill不理解js,所以永远不会设置隐藏表单字段的值,因此当twill向服务器发送请求时,隐藏表单字段的值在请求中丢失。在

网站尝试各种各样的技巧来阻止程序访问他们的页面。在

相关问题 更多 >