Следующая строка ищет точный NavigableString 'Python':
>>> soup.body.findAll(text='Python')
[]
Обратите внимание, что найдена следующая строка NavigableString:
>>> soup.body.findAll(text='Python Jobs')
[u'Python Jobs']
Обратите внимание на это поведение:
>>> import re
>>> soup.body.findAll(text=re.compile('^Python$'))
[]
Таким образом, ваше регулярное выражение ищет вхождение 'Python', а не точное совпадение с 'Python' NavigableString.