2012-04-02 2 views
0

Вот мой код на Python с помощью BeautifulSoup. Основная проблема связана с атрибутами. Я ищу, каждый элемент из th должен быть разделен, но по какой-то причине он продолжает генерировать внутри только одного отдельного тега.Проблема с созданием html-файла из красивого супа

from BeautifulSoup import BeautifulSoup, Tag 
soup=BeautifulSoup() 
mem_attr=['Description','PhysicalID','Slot','Size','Width'] 
tag1 = Tag(soup, "html") 
tag2 = Tag(soup, "table") 
tag3 = Tag(soup, "tr") 
tag4 = Tag(soup, "th") 
tag5 = Tag(soup, "td") 
soup.insert(0, tag1) 
tag1.insert(0, tag2) 
tag2.insert(0, tag3) 
for i in range(0,len(mem_attr)): 
     tag3.insert(0,tag4) 
     tag4.insert(i,mem_attr[i]) 

print soup.prettify() 

Вот его вывод:

<html> 
<table> 
    <tr> 
    <th> 
    Description 
    PhysicalID 
    Slot 
    Size 
    Width 
    </th> 
    </tr> 
</table> 
</html> 

То, что я ищу, это одна.

<html> 
    <table> 
     <tr> 
     <th> 
     Description 
     </th> 
     <th> 
     PhysicalID 
     </th> 
     <th> 
     Slot 
     </th> 
     <th> 
     Size 
     </th> 
     <th> 
     Width 
     </th> 
     </tr> 
    </table> 
    </html> 

Может ли кто-нибудь сказать мне, что отсутствует в коде ?.

ответ

3

Вы помещаете его в тот же th. Вы никогда не говорили, чтобы он создал больше одного.

Вот код больше напоминает то, что вы хотели:

from BeautifulSoup import BeautifulSoup, Tag 
soup = BeautifulSoup() 
mem_attr = ['Description', 'PhysicalID', 'Slot', 'Size', 'Width'] 
html = Tag(soup, "html") 
table = Tag(soup, "table") 
tr = Tag(soup, "tr") 
soup.append(html) 
html.append(table) 
table.append(tr) 
for attr in mem_attr: 
    th = Tag(soup, "th") 
    tr.append(th) 
    th.append(attr) 

print soup.prettify() 
+0

Можете ли вы быть немного более ясным. Я попробовал пару вещей, но это тоже не сработало. например: я использую этот код для цикла for: 'tag3.insert (i, tag4)', но ничего не работает. – Jack

+0

I gt it. Спасибо чувак – Jack

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