BeautifulSoup: get_text () возвращает пустую строку из тега bs4 - PullRequest
0 голосов
/ 21 октября 2019

Я пытаюсь извлечь информацию из этой страницы новостей .

Сначала я анализирую страницу:

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")

и, если я его распечатаю, я получаю:

<meta content="Boris Johnson could be held in contempt of court over Brexit letter" property="og:title"/>

Однако, когда я запускаю title.get_text(), результатом будет пустая строка: ''

Где моя ошибка?

1 Ответ

1 голос
/ 21 октября 2019

Это потому, что на самом деле нет никакого текста, определенного тегом. «Текст», который вам нужен в этом случае, содержится в теге <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'}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...