2015-06-14 2 views
1

Я использую BeautifulSoup для анализа HTML-документа и, похоже, столкнулся с проблемой. Я нашел текст, который мне нужно извлечь, но текст прост. Нет никаких тегов или чего-то еще. Я не уверен, что мне нужно использовать Regex для этого, потому что я не знаю, могу ли я захватить текст с помощью BeautifulSoup, учитывая, что он не содержит никаких тегов.Получение текста без тегов с помощью BeautifulSoup?

<strike style="color: #777777">975</strike> 487 RP<div class="gs-container default-2-col"> 

Я пытаюсь извлечь «487».

Спасибо!

ответ

3

Вы можете использовать предыдущий или следующий тег в качестве якоря, чтобы найти текст. Например, найти <strike> первый элемент, а затем получить текстовый узел рядом с ним:

from bs4 import BeautifulSoup 

html = """<strike style="color: #777777">975</strike> 487 RP<div class="gs-container default-2-col">""" 
soup = BeautifulSoup(html) 

#find <strike> element first, then get text element next to it 
result = soup.find('strike',{'style': 'color: #777777'}).findNextSibling(text=True) 

print(result.encode('utf-8')) 
#output : ' 487 RP' 
#you can then do simple text manipulation/regex to clean up the result 

Обратите внимание, что вышеуказанные коды для демо, чтобы не выполнить всю задачу.

Смежные вопросы