用靓汤刮多桌

2024-06-06 10:19:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个尝试用漂亮的汤刮桌子的Python新手。在

我想用ubuntucve信息来刮取与下面类似的表,并将该表输出到csv文档中。在

<div class="pkg">
<div class="field">Package</div><div class="value">Source: <a href="http://people.canonical.com/~ubuntu-security/cve/pkg/mysql-cluster-7.0.html">mysql-cluster-7.0</a></div>
<table>
<tr><td>(Lucid Lynx):</td><td>ignored
</td></tr>
<tr><td>(Precise Pangolin):</td><td>DNE
</td></tr>
<tr><td>(Quantal Quetzal):</td><td>DNE
</td></tr>
<tr><td>(Raring Ringtail):</td><td>DNE
</td></tr>
<tr><td>(Saucy Salamander):</td><td>DNE
</td></tr>
</table>
</div>
<div class="pkg">
<div class="field">Package</div><div class="value"><a href="http://people.canonical.com/~ubuntu-security/cve/pkg/mysql-5.5.html">mysql-5.5</a></div>
<table>
<tr><td>(Lucid Lynx):</td><td>DNE
</td></tr>
<tr><td>(Precise Pangolin):</td><td>released
(5.5.32-0ubuntu0.12.04.1)
</td></tr>
<tr><td>(Quantal Quetzal):</td><td>released
(5.5.32-0ubuntu0.12.10.1)
</td></tr>
<tr><td>(Raring Ringtail):</td><td>released
(5.5.32-0ubuntu0.13.04.1)
</td></tr>
<tr><td>(Saucy Salamander):</td><td>released
(5.5.32-0ubuntu1)
</td></tr>
</table>
</div>

我希望csv输出采用以下格式:

  1. 释放,状态
  2. (清醒的山猫),被忽视
  3. (精密穿山甲),DNE
  4. 等等。。。。在

我可以用table = soup.findAll("table")来拉所有的表,但是我不确定如何将所有表的内容拆分为两个不同的单元格到一个电子表格中。在

任何建议都将不胜感激。在


Tags: csvdivhttpfieldpackagevaluemysqltable
1条回答
网友
1楼 · 发布于 2024-06-06 10:19:39

首先,您的文件似乎是有效的XML,所以您应该只使用python中的普通XML解析。一点也不需要靓汤。在

这就是说,你真的需要找到所有的行,在它们上面循环,然后连接列。在

import csv
with open('some.csv', 'rb') as f:
    writer = csv.writer(f)
    writer.writerow(['release', 'status'])
    for row in table.find_all('tr'):
        writer.writerow(col.string for col in row.find_all('td'))

相关问题 更多 >