Как извлечь содержимое <span>, которое содержит обычные тексты, а также другие теги HTML в BeautifulSoup? - PullRequest
2 голосов
/ 10 марта 2019

Используя BeautifulSoup, я пытаюсь извлечь содержимое, которое находится между тегами <span>.Я использую свойство string, чтобы получить желаемый результат.Работает нормально, если тег <span> содержит только текст.Но он не работает, если в теге есть другие HTML-теги, отличные от обычного текста, помещенного в него.Например,

Если я соскребу следующее:

<span>Elegant, Furnished, Planned</span>

Использование фрагмента:

soup.select_one('span').string

Работает нормально, и я получаю вывод как:

Elegant, Furnished, Planned

Но я получаю None, когда соскребаю следующее:

<span>Elegant, <b>Furnished</b>, Planned</span>

Помогите мне разобраться.

Ответы [ 2 ]

1 голос
/ 10 марта 2019

Должно работать нормально.Попробуйте с lxml

from bs4 import BeautifulSoup as bs
html = '''
<span>Elegant, Furnished, Planned</span>
'''
soup = bs(html, 'lxml')
soup.select_one('span').text
0 голосов
/ 10 марта 2019

Я думаю, вы можете попробовать это:

url = 'your.example.net'
page = urllib.request.urlopen(url)
soup = BeautifulSoup(page, "html.parser")

for span in soup.find_all('span'):
    print (span.text)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...