2014-12-12 2 views
0

Я использую Beautiful Soup 4 для анализа html-документа и извлечения данных.Использование BeautifulSoup для извлечения частей строки

Я хотел бы получить значение времени из этого тега:

<span style="font-size:9.0pt;font-family:Arial;color:#666666"> 20 min <b>Start time: </b> 10 min <b>Other time: </b> 0 min</span> 

IE: 20 мин, 10 мин

+0

Извлечение части с помощью подстроки. Однако это кажется неправильным. В идеале я хотел бы получить текстовый узел содержимого. –

+1

Я имею в виду, можете ли вы дать нам код, который у вас уже есть, и объяснить, что работает, а что нет. Также ссылка на веб-сайт, который вы пытаетесь выполнить, поможет много. –

ответ

2

Помогает ли это?

from BeautifulSoup import BeautifulSoup 
from BeautifulSoup import Tag 

soup = BeautifulSoup("<span style=\"font-size:9.0pt;font-family:Arial;color:#666666\"> 20 min <b>Start time: </b> 10 min <b>Other time: </b> 0 min</span>") 
span = soup.find('span') 
for e in span.contents: 
if type(e) is Tag: 
    print "found a tag:", e.name 
else: 
    print "found text:", e 

Выход:

found text: 20 min 
found a tag: b 
found text: 10 min 
found a tag: b 
found text: 0 min 
+0

. Я закончил использование span.contents, и оттуда я смог захватить значения из массива. Благодаря! –

0

Это то, как это должно быть сделано:

from bs4 import BeautifulSoup 

ss = """<span style="font-size:9.0pt;font-family:Arial;color:#666666"> 20 min <b>Start time:  </b> 10 min <b>Other time: </b> 0 min</span>""" 
soup = BeautifulSoup(ss) 
timetext = soup.span.text 
start_time = timetext.split("Start time:")[1].split("min")[0].strip() 

Я оставил добычу other_time как упражнение для вас!

+0

Я думаю, что regex будет лучшим вариантом для этого https://regex101.com/r/lP9vZ1/1 –

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