Как обойти ошибку,чтоб скрипт продолжил работу не смотря на неё?

Скрипт python

import requests
from bs4 import BeautifulSoup



file = open('1.txt').read().split('\n')


url = 'https://****.ru/auth/login'
headers = {'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)     Chrome/90.0.4430.212 Safari/537.36'}

session = requests.Session()
session.headers.update(headers)



url_auth = 'https://****.ru/auth/login'

for account in file:
    session = requests.Session()
    session.headers.update(headers)
    r = session.get(url)
    soup = BeautifulSoup(r.content, 'html.parser')

    csrf = soup.find('meta', {'name': 'csrf-token'})['content']

    phone = account.split(":")[0]
    password = account.split(":")[1]


    u = phone
    p = password




    payload = {
        '_csrf': csrf,
        'LoginForm[login]': phone,
        'LoginForm[password]': password,
        }

    r = session.post(url_auth, data=payload,)

Скрипт работает,но спустя 100-300 строк выдает ошибку

line 25, in csrf = soup.find('meta', {'name': 'csrf-token'})['content'] TypeError: 'NoneType' object is not subscriptable

Можно ли сделать так,чтоб скрипт не замечал данную ошибку и продолжал работу после неё?


Ответы (1 шт):

Автор решения: FotonPC

Добавить try - except:

import requests
from bs4 import BeautifulSoup



file = open('1.txt').read().split('\n')


url = 'https://****.ru/auth/login'
headers = {'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) 
AppleWebKit/537.36 (KHTML, like Gecko)     Chrome/90.0.4430.212 
Safari/537.36'}

session = requests.Session()
session.headers.update(headers)



url_auth = 'https://****.ru/auth/login'

for account in file:
    session = requests.Session()
    session.headers.update(headers)
    r = session.get(url)
    soup = BeautifulSoup(r.content, 'html.parser')
    #####    Обработка исключения #####
    try:
        csrf = soup.find('meta', {'name': 'csrf-token'})['content']
    except:
        pass # Ошибка пропущена

    phone = account.split(":")[0]
    password = account.split(":")[1]


    u = phone
    p = password




    payload = {
        '_csrf': csrf,
        'LoginForm[login]': phone,
        'LoginForm[password]': password,
        }

    r = session.post(url_auth, data=payload,)
→ Ссылка