从美丽的汤创建一个HTML文件的问题

时间:2012-04-02 01:22:36

标签: python html beautifulsoup

这是使用BeautifulSoup的我的python代码。主要问题是属性。我正在寻找的是,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 个答案:

答案 0 :(得分:5)

你把它放在同一个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()