Проблема в создании HTML-файла из красивого супа - PullRequest
0 голосов
/ 02 апреля 2012

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

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>

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

1 Ответ

5 голосов
/ 02 апреля 2012

Вы помещаете это в то же самое 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...