我最近一直在搞表單提交,我正在編寫一個Python腳本來查看我是否可以通過僅輸入驗證碼來創建Steam帳戶。作爲參考,我正在提交的網站是https://store.steampowered.com/join/。如圖所示由機械化的要求,填寫表格如下:用Python提交表單
<create_account POST https://store.steampowered.com/join/ application/x-www-form-urlencoded
<TextControl(accountname=)>
<SelectControl(choose_accountname=[*, , ])>
<PasswordControl(password=)>
<PasswordControl(reenter_password=)>
<TextControl(email=)>
<TextControl(reenter_email=)>
<HiddenControl(challenge_question=) (readonly)>
<TextControl(secret_answer=)>
<HiddenControl(captchagid=1009037421128850761) (readonly)>
<TextControl(captcha_text=)>
<HiddenControl(action=submit_agreement) (readonly)>
<CheckboxControl(i_agree_check=[on])>
<HiddenControl(ticket=) (readonly)>>
幾乎一切似乎工作,但我有一個小麻煩機械化和urllib2的正確提交表單。我確信我只是在做一些小而簡單的錯誤,但我花了很長時間試圖找到這個錯誤。我現在的要求配製在簡單的幾行,像這樣:
def submit_form(self, captcha_text):
self.form["accountname"]=account_prefix+get_next_number()
self.form["password"]=account_password
self.form["reenter_password"]=account_password
email = emails.pop()
self.form["email"] = email
self.form["reenter_email"] = email
control = self.form.find_control("challenge_question")
control.disabled = False
control.readonly = False
control.value = "NameOfSchool"
self.form["secret_answer"] = secret_answer
self.form["captcha_text"] = captcha_text
self.form.find_control(id="i_agree_check").items[0].selected = True
print urllib2.urlopen(self.form.click()).read()
inc_account_number()
resave_email_list(emails)
大部分申請的可能是正確的,並有只有幾行我真的認爲可疑。隨着mechanize
我試圖檢查「我同意並且年滿13歲或以上」方框self.form.find_control(id="i_agree_check").items[0].selected = True
。根據我的一些測試,我認爲這條線可能實際工作,但ReadOnly challenge_question
部分的整個設置很可能是錯誤的。作爲參考,該代碼段爲:
control = self.form.find_control("challenge_question")
control.disabled = False
control.readonly = False
control.value = "NameOfSchool"
提交的失敗將是提交方法最後一種可能性:urllib2.urlopen(self.form.click()).read()
如果任何人有什麼可能會錯誤任何的想法,甚至替代方法來完成使用Python的任務,我將非常感謝。我努力搜索,失敗了。如果可以的話,伸出援助之手!
它真有工作&計數= 4每一次?以及如何提交這樣的POST請求? – Paul 2011-12-28 01:02:09
@Paul urllib.urlopen(url,post_data) – 2011-12-28 10:35:21
我想出了一點搜索。顯然,如果您不重複使用驗證碼,則計數無關緊要。一切都很好!感謝一束。 – Paul 2011-12-29 20:11:44