繁体   English   中英

机械化python中的此错误意味着什么?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM