2013-09-25 3 views
2

Я извлек данные, основанные на Интернете, в виде списка, используя Beautiful Soup. На оригинальном сайте это таблица чисел:Python - Beautiful Soup - Remove Tags

[<td class="right">113</td>, <td class="right"> 
89 </td>, <td class="right last"> 
<b>117</b> </td>, <td class="right">113</td>, <td class="right"> 
85 </td>, <td class="right last"> 
<b>114</b> </td>, <td class="right">100</td>, <td class="right"> 
56 </td>, <td class="right last"> 
<b>84</b> </td>] 

Какой самый эффективный способ создать список номеров из этих данных? В идеале я хотел бы извлечь теги с помощью Beautiful Soup, но я не могу понять, как это сделать из документации.

Мой исходный код Суп:

print soup.find_all('td', 'right')    #printing this produces the above data 

numbers_data = []        #my attempt to extract tags 
for e in soup.find_all('td', 'right'): 
    numbers_data.append(e.extract()) 

print numbers_data 

Оба возвращают один и тот же список.

ответ

1
numbers_data = [int(e.text) for e in soup.find_all('td', 'right')] 

print numbers_data 
+0

Разве это не 'e.string' или' e.get_text() ', а не' e.text'? –

+1

@PeterDeGlopper - № BeautifulSoup имеет свойство text на узле. Как в стороне, если вы используете BeautifulSoup4 - используйте селектор синтаксиса css, гораздо чище - '' 'soup.select ('td.right')' '' – DivinusVox

+0

, они кажутся одинаковыми: 'e = bs4. BeautifulSoup ('hi

c

'); печать (e.text); print (e.get_text()) ' – prgao