Это потому, что на самом деле нет никакого текста, определенного тегом. «Текст», который вам нужен в этом случае, содержится в теге <meta>
с атрибутом content
. Поэтому вам нужно извлечь значение content
:
import requests
from bs4 import BeautifulSoup
page = requests.get("https://www.theguardian.com/politics/2019/oct/20/boris-johnson-could-be-held-in-contempt-of-court-over-brexit-letter")
soup = BeautifulSoup(page.content, 'html.parser')
title = soup.find('meta', property="og:title")['content']
Вывод:
print (title)
Boris Johnson could be held in contempt of court over Brexit letter
Вы можете получить все атрибуты и значения с помощью .attrs
. Это вернет словарь (пары ключ-значение) атрибута и значения в данном теге:
title = soup.find('meta', property="og:title")
print (title.attrs)
Вывод:
print (title.attrs)
{'property': 'og:title', 'content': 'Boris Johnson could be held in contempt of court over Brexit letter'}