2012-05-03 88 views
2

我工作的机械化获取表单元素蟒蛇机械化FormNotFoundError

import mechanize 
br = mechanize.Browser() 
br.set_handle_robots(False) 
br.open("http://www.bnm.gov.my/index.php?ch=12&pg=622") 
br.select_form(name="Rates") 

但这是抛出错误:

FormNotFoundError: no form matching name 'Rates' 

即使有

<form onsubmit="return validate();" method="get" action="index.php" name="Rates"> 

可以有一个人帮助在此

在此先感谢

+0

看起来网页上有几个元素的名称和/或编号为“rates”。这可能是一个问题。 –

+0

似乎机械化看起来没有任何形式。 '[i.name for br.forms()]'返回一个空列表。 – Vlad

+0

这个[问题](http://stackoverflow.com/questions/7345696/cant-find-forms-in-a-webpage-using-perl-module-wwwmechanize)可以解释这种行为。用'wget'检索页面也不会生成该表单。 – Vlad

回答

1

尝试与NR PARAM选择的形式:

select_form(self, name=None, predicate=None, nr=None) 

我猜想,页面只有1个形式,所以尽量NR = 0。

如果页面中没有表单,则可能意味着它是使用Javascript添加的。而在这种情况下,机械化还不够。你将不得不使用Selenium或Spynner。