2009-10-10 3 views
5

파이썬에서 일부 웹 크롤링을 위해 mechanize (clientform을 사용)를 사용하고 있으며 JS를 지원하지 않기 때문에 폼에 존재하지 않는 입력 값을 설정하려고합니다 (입력이 JS에 의해 생성 됨). 어떻게해야합니까? 당신이Python ClientForm에 존재하지 않는 필드를 설정하는 방법은 무엇입니까?

from mechanize import Browser 
br = Browser() 
page = br.open('http://google.com') 
br.select_form(nr = 0) 
br['unexistent'] = 'hello' 

답변

16
먼저 폼에 컨트롤을 추가 할 필요가

다음 fixup 양식을 실행하려고하면

오류는 당신이 얻을 것과 유사하다.

br.form.new_control('text','unexistent',{'value':''}) 
br.form.fixup() 
br['unexistent'] = 'hello' 

정말 잘 문서화하지 않고, fixup() 아래 소스에 주석이 : 그것은 너무 위험 아무것도하는 것처럼

This method should only be called once, after all controls have been 
added to the form. 

그러나, 그것은 보이지 않는가. 아마 적어도 폼에있는 다른 것을 뒤범벅하기 전에 먼저 컨트롤을 추가하십시오.

+0

감사합니다. 매력으로 작동합니다. – Fluffy

관련 문제