Вместо того, чтобы делать index
, проведите __contains__
тест:
if 'Named Administrator' in divs:
и двигаться вперед, только если Named Administrator
действительно существует в списке divs
, поэтому вы не получите ValueError
.
Другое соображение заключается в том, что тест членства в списках имеет сложность O (N) по времени, поэтому, если вы делаете это для большого списка, возможно, вместо этого используйте набор:
{e.get_text() for e in soup.findAll('span')}
но поскольку наборы неупорядочены, вы не сможете использовать index
-ing.
Так что либо подумайте о чем-то еще, что будет работать и на наборах, т. Е. Нет необходимости получать следующее значение при индексации.
Или вы можете использовать набор для проверки членства и список для получения следующего значения. Стоимость может быть выше или ниже в зависимости от вашего фактического контекста, и вы можете узнать это, только профилировав:
divs_list = [e.get_text() for e in soup.findAll('span')]
divs_set = set(divs_list)
if 'Named Administrator' in divs_set:
index = divs_list.index('Named Administrator')
contact = divs_list[index + 1]