使用Python从给定选项卡中的HTML表中提取字符串

时间:2016-08-28 18:20:22

标签: python html parsing html-table

我需要从下面的HTML表中提取字符串值。我想从特定选项卡循环遍历表,并将结果水平复制到命令行或某个文件中。

我这里只粘贴一行信息。 此表根据Gerrits上发生的更改进行更新。 我想要的结果是新标签下的所有Gerrit编号 例如,如果我想从批准队列中获取Gerrit列表,则值应显示如下图所示。

dashboard_image

7897423,2423343,34242342,34234,57575675

<ul>
    <li><a href="#tab1"><span>Review Queue</span></a></li>
    <li><a href="#tab2"><span>Approval Queue</span></a></li>
    <li><a href="#tab3"><span>Verification Queue</span></a></li>
    <li><a href="#tab4"><span>Merge Queue</span></a></li>
    <li><a href="#tab5"><span>Open Queue</span></a></li>
    <li><a href="#tab6"><span>Failed verification</span></a></li>
</ul>
<div id="tab1">
    <h1>Review Queue</h1>
    <table class="tablesorter" id="dashboardTable">
        <thead>
            <tr>
                <th></th>
                <th>Gerrit</th>
                <th>Owner</th>
                <th>CR(s)</th>
                <th>Project</th>
                <th>Dev Branch/PL</th>
                <th>Subject</th>
                <th>Status</th>
                <th>Days in Queue</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td><input type="checkbox" /></td>
                <td> <a href="https://example/1696771">1696771</a> </td>
                <td> <a href="http://people.theng/People?id=ponga">ponga</a> </td>
                <td> <a href="http://chong/CR/1055680">1055680</a> </td>
                <td>platform/hardware/kiosk/</td>
                <td> hidden-userspace.aix.2.0.dev </td>
                <td>display: information regarding display</td>
                <td> some info here </td>
                <td> 2 </td>
            </tr>

1 个答案:

答案 0 :(得分:0)

是什么阻止你利用BeautifulSoup呢?

假设您已经将html(使用sgmllib或任何其他库)读入名为html_contents的字符串变量中。 由于您没有提到要从中获取数据的列,我正在提取gerrit数列。

您可以这样做:

from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc, 'html.parser')

for tr in soup.tbody:
  if tr.name == 'tr':
    print tr.contents[3].contents[1].string

上面你可以循环tbody里面的所有tr标签,并且(假设tr中包含的所有td标签具有相同的结构),它们的值被提取出来,在这种情况下是内部a标签的值。

Read the quick start,它将使您在解析HTML文档时更轻松。