У меня такая же проблема.
Я не знаю почему, но я думаю, что это связано с пустыми элементами, созданными BS.
Например, если у меня есть следующий код:
from bs4 import BeautifulSoup
html =' \
<a> \
<b test="help"> \
hello there! \
<d> \
now what? \
</d> \
<e> \
<f> \
</f> \
</e> \
</b> \
<c> \
</c> \
</a> \
'
soup = BeautifulSoup(html,'lxml')
#print(soup.find('b').attrs)
print(soup.find('b').contents)
t = soup.find('b').findAll()
#t.reverse()
for c in t:
gb = c.extract()
print(soup.find('b').contents)
soup.find('b').text.strip()
Я получил следующую ошибку:
Объект 'NoneType' не имеет атрибута 'next_element'
На первом отпечатке я получил:
>>> print(soup.find('b').contents)
[u' ', <d> </d>, u' ', <e> <f> </f> </e>, u' ']
и на втором я получил:
>>> print(soup.find('b').contents)
[u' ', u' ', u' ']
Я почти уверен, что это пустой элемент посередине, создающий проблему.
Обходной путь, который я нашел, это просто воссоздать суп:
soup = BeautifulSoup(str(soup))
soup.find('b').text.strip()
Теперь он печатает:
>>> soup.find('b').text.strip()
u'hello there!'
Надеюсь, это поможет.