2016-04-07 15 views
-1

Makineyi yenilemek için yeni yapıyorum ve nasıl çalıştığını tam olarak anlayamıyorum, birçok öğretici denedim, ancak bunların çoğu güncel değildi ve işe yaramadı .Python'da HTML formları doldurmak için Mechanize nasıl kullanılır

İlk soru, Mekanizmanın ne gibi bir etkisi vardır? Son kullanıcılar tarafından görülebilmeleri için formları belirli bir tarayıcıya sığdırır mı, yoksa Son kullanıcı tarafından görüntülenemeyen tarayıcıyı Mekanize et her şeyi yapar mı?

Mechanize formunu doldurmaya çalışıyorum, Sayfayı yeniden yükledikten sonra Form giriş adını değiştirir, Değerini sayıya göre nasıl değiştirebilirim?

import mechanize 

br = mechanize.Browser() 

br.set_handle_robots(False) 

br.addheaders = [("User-agent","Mozilla/5.0")] 

gitbot = br.open("https://arkhamnetwork.org/community/register") 

br.select_form(nr=0) 

br["user[username]"] = "username" 

br["user[email]"] = "email"  

br["user[password]"] = "password" 

sign_up = br.submit() 

Hata i yürütülürken kodundan sonra alıyorum: NameError: name 'username' is not defined

Ben girdi adını kullanmadan sayfadaki tüm formları doldurup istiyorum, bunu nasıl yapabilirim?

+0

Şu kullanıcı i e ' "filanca"' gibi bir dize geçmesi gerekiyorsa, 'username' olmak ne bekliyorsunuz: bu özel web sitesinde form doldurması

Kod? E-posta ve şifre için aynı gerekir. Ayrıca 'br [" kullanıcı [login] "]' yanlış –

+0

"adı" - sayfadaki ilk alan. – ShellRox

+1

evet, ama kullanıcı adından geçmek zorundasınız, bir dakikada bir cevap yazacağım ve nasıl yapacağımı göstereceğim –

cevap

1

buldum çözüm:

Formlar aslında kontrolleri içeren edilir, Thats i formu seçmek neden ihtiyaç.

import mechanize 

br = mechanize.Browser() 

response = br.open("https://arkhamnetwork.org/community/register") 

br.addheaders = [("User-agent","Mozilla/5.0")] 

gitbot = br.open("https://arkhamnetwork.org/community/register") 

br.select_form(nr=1) 

br.set_all_readonly(False) 

br.form.set_value("test", nr=0) 

br.method = "POST" 

response = br.submit() 

print response.geturl('http://arkhamnetwork.org/community/register/register')