以前的表单字段已不再被mechanize python脚本发现。

2024-10-02 04:21:19 发布

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

让我先为我的新手道歉。几年前,一个朋友问我是否可以编写一个程序来自动抢占代课空缺。我对这一领域一无所知,但有几本教程让我在不了解html的情况下(以及对Python的一点点了解)做了一些突破。自那以后,脚本运行得很好,但今年他们的网站似乎已经被重做和破坏,使它远远超出我的理解。在

我以前的代码是:

# Create a Browser instance
b = mechanize.Browser()
# Load the page
b.open(loginURL)

# Select the form
b.select_form(nr=0)

# Fill out the form
b['id'] = 'XXXXXXXXXX'   # Note: I edited out my friend's login info here for privacy
b['pin'] = 'XXXX'

b.submit();

仍然只有一个窗体,但控件现在是“hidden”类型,不再是我直接需要的。当我用开发人员模式检查html时,我可以看到html中的旧字段,它们的名称是相同的,但我现在不知道(尝试了一些不起作用的方法)如何访问它们。以下是html:

如有任何帮助,我们将不胜感激。非常感谢你。在


Tags: the代码程序browserform脚本网站html
2条回答

如果html代码正是该页面上的代码,请尝试类似的方法。当您输入b.select_form(nr=0)时,可能由于某些原因第一个表单不是您所选择的。通过在b.select_form()中查找表单名称,可以确保找到正确的表单。测试一下,看看效果如何。在

import mechanize
b = mechanize.Browser()
b.open(loginURL)
#since the actual form is named loginform just select it
b.select_form("loginform") 
b['id'] name of login input field
b['pin']
b.submit()

试试这个:

b = mechanize.Browser()
b.set_handle_equiv(False)
b.set_handle_robots(False)
b.addheaders = [('User-agent','Mozilla/5.0 (X11; Linux x86_64; rv:18.0)Gecko/20100101 Firefox/18.0 (compatible;)'),('Accept', '*/*')]
b.open(loginURL).read()

b.select_form(nr=0)

b['id'] = 'XXX'
b['pin'] = 'XXX'

resp = b.submit()
print resp.read()

对我有用!在

相关问题 更多 >

    热门问题