[英]What does this error mean with mechanize in python?
我试图用python制作一个机器人来完成代码课程,并尽快将其全部填写,因为我们必须完成一门高中课程,而且我一直在使用python进行机械化。 我已经填写了我想成为该程序的基础知识,而我所要填写的只是具体的课程详细信息,但我仍然遇到相同的错误
File "codecademy.py", line 11, in <module>
br.open(codecademy) #opens codecademy
File "build/bdist.macosx-10.10-intel/egg/mechanize/_mechanize.py", line 203, in open
File "build/bdist.macosx-10.10-intel/egg/mechanize/_mechanize.py", line 216, in _mech_open
mechanize._mechanize.BrowserStateError: can't fetch relative reference: not viewing any document
我不确定这是什么意思。 我已经检查了_mechanize.py的第203和216行,但是在那里没有看到任何错误,并且由于机械化的教程不多,所以我不知道需要修复什么。 这是我的代码:
try:
import mechanize #tries to import mechanize
except ImportError: #if cant import mechanize
print 'Oops. It seems as if you do not have mechanize installed'
codecademy = 'www.codecademy.com' #stores codecademy link as a variable
codecademySI = 'http://www.codecademy.com/sign_in' #codecademy sign in link
codecademyJS = 'http://www.codecademy.com/courses/getting-started-v2/0/1?curriculum_id=506324b3a7dffd00020bf661' #Javascript link
br = mechanize.Browser() #make a mechanize browser object, acts as virtual browser, emulator
br.open(codecademy) #opens codecademy
signing up
def signUp(username, password, email):
br.select_form(nr=0) #selects first form on the page
br["user[email]"] = email #sets value of email field to whatever user entered
br["user[password]"] = password #sets value of username field to whatever user entered
br["user[username]"] = username #sets value of password field to whatever user entered
submittionResult = br.submit() #submits data entered above
def logIn(username, password):
br.open(codecademySI) #opens codecademy
br.select_form('sign-in-form')#finds login button
br.form ['q'] = query
br.submit()#clicks login button
br["user[login]"] = username #sets value of email/username field to whatever user entered
br["user[password]"] = password #sets value of password field to whatever user entered
submittionResult = br.submit() #submits data entered above, local so doesn't override other Submittion Result
def _JS():
br.open(codecamedyJS)
#ace_text-input ui-inited
js = 1
if(js == 1):
br["ace_text-input ui-inited"] = '"Name"'
js =+ 1
elif(js == 2):
br["ace_text-input ui-inited"] = '"Name".length'
js =+ 1
elif(js == 3):
br["ace_text-input ui-inited"] = '3 + 4'
js =+ 1
elif(js == 4):
br["ace_text-input ui-inited"] = '4 * 4'
js =+ 1
elif(js == 5):
br["ace_text-input ui-inited"] = 'eggplant'
js =+ 1
elif(js == 6):
br["ace_text-input ui-inited"] = '"cake".length'
js =+ 1
elif(js == 7):
br["ace_text-input ui-inited"] = 'confirm("This is an example of using JS to create some interaction on a website. Click OK to continue!");'
js =+ 1
elif(js == 8):
br["ace_text-input ui-inited"] = 'confirm("I fell awesome!")'
js =+ 1
elif(js == 9):
br["ace_text-input ui-inited"] = 'prompt("What is your name?");'
js =+ 1
elif(js == 10):
br["ace_text-input ui-inited"] = '"string with words".length'
js =+ 1
elif(js == 11):
br["ace_text-input ui-inited"] = '"Im coding like a champ".length'
js =+ 1
#browser.form = list(browser.forms())[0] #find form with no name
br.select_form('ui-button ui-button--medium ui-button--blue--on-dark ui-loading js-submit-code')
br.form ['q'] = query
br.submit()
#signUp(russ999999, PASSWORD, russ9@optonline.net)
logIn(russ99999, PASSWORD)
您可能会为此而措手不及,但是您需要在URL中包含方案,即http
。 尝试改变
codecademy = 'www.codecademy.com'
至
codecademy = 'http://www.codecademy.com'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.