2017-06-04 151 views
-1

我试图做一个kahoot垃圾邮件发送者输入一个PIN码和一个用户名,由用户决定。我得到一个类型的错误,当我运行这段代码:RoboBrowser获取类型错误'NoneType'对象不可订阅

import re 
from robobrowser import RoboBrowser 

#Getting pin number for kahoot 
pin = int(input("What is the pin number of the Kahoot?")) 
# Getting number of bots to be deployed 
number_of_bots = int(input("How many bots would you like?")) 
#Getting base name 
name = str(input("What would you like your bots' name to be (number will be added to the end of the name)?")) 
#counter 
counter = 0 
#Number on end of name 
num = 1 

def joinKahoot(pin, number_of_bots, name): 
    browser = RoboBrowser(history = True) 
    #Connect to kahoot's website 
    browser.open("https://kahoot.it/") 
    pin_form = browser.get_form() 
    pin_form['inputSession'].value == pin 
    browser.submit_form(pin_form) 

    name_form = browser.get_form() 
    name_form["username"].value == name 
    browser.submit_form(name_form) 

#While counter is less than number_of_bots flood kahoot 
while counter < number_of_bots: 
    joinKahoot(pin, number_of_bots, name) 
    counter += 1 
    num += 1 
    name = name + str(num) 

错误:

Traceback (most recent call last): 
    File "C:\Users\Vincent\Documents\Kahoot Spammer V2\flood.py", line 29, in <module> 
    joinKahoot(pin, number_of_bots, name) 
    File "C:\Users\Vincent\Documents\Kahoot Spammer V2\flood.py", line 20, in joinKahoot 
    pin_form['inputSession'].value == pin 
TypeError: 'NoneType' object is not subscriptable 

我做错了吗?

+0

是name_form [“username”]。value == name比较正确的语法,或者你的意思是= – Rosh

+0

@rosh无论哪种方式,我仍然会得到相同的错误。 –

+1

这意味着'browser.get_form()'返回'None',然后你试着查找失败的'None [“username”]''。 –

回答

0

您正在打开的页面,https://kahoot.it/#/不包含HTML <form>标记。您看到的表单是使用Javascript创建的,毫无疑问,您可以使用基本的HTML解析技术来击败DoS攻击。

这就是为什么browser.get_form()什么也没有返回。函数试图返回一个robobrowser.forms.form.Form的实例,它是HTML表单的表示,但它找不到一个实例。

我怀疑你将无法得到robobrowser做你想要在这个特定的网站。好东西也是。

+0

我将如何填写该表格? –

+0

我明白'selenium'模块会执行Javascript并向您呈现可解析的HTML。 – BoarGules

相关问题