我需要从下面的HTML表中提取字符串值。我想从特定选项卡循环遍历表,并将结果水平复制到命令行或某个文件中。
我这里只粘贴一行信息。 此表根据Gerrits上发生的更改进行更新。 我想要的结果是新标签下的所有Gerrit编号 例如,如果我想从批准队列中获取Gerrit列表,则值应显示如下图所示。
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>
答案 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文档时更轻松。