首页 > 解决方案 > 解析数据的 HTML 存储格式

问题描述

我从网站中提取了一种 HTML 存储格式标记语言。信息采用表格格式,如网站所示:在此处输入图像描述 但是在我使用 curl 命令提取信息后,我得到了 HTML 格式的信息。请告知如何使用 Python 解析这些信息,以便我只能收集数据。也许我们可以将数据插入到类似 [[CALX-582 Action-Item], [CALX-736 Action-Item]......] 的列表中。是否有任何 Python-API 可以做到这一点?还是建议只使用 REGEX 并解析所需的数据。

<pre><br /></pre>
<p class="auto-cursor-target"><br /></p>
<table><colgroup><col /><col /></colgroup>
<tbody>
<tr>
<th>JIRA</th>
<th>Type</th></tr>
<tr>
<td>CALX-582</td>
<td><span>Action-Item</span></td></tr>
<tr>
<td>CALX-736</td>
<td><span>Action-Item</span></td></tr>
<tr>
<td>CALX-735</td>
<td><span>Action-Item</span></td></tr>
<tr>
<td>CALX-792</td>
<td><span>Action-Item</span></td></tr>
<tr>
<td>CALX-1563</td>
<td><span>Action-Item</span></td></tr>
<tr>
<td>CALX-1567</td>
<td><span>Action-Item</span></td></tr>
<tr>
<td>CALX-1861</td>
<td>Bug</td></tr></tbody></table>
<p class="auto-cursor-target"><br /><br /></p>

标签: pythonhtmlcurlhtml-table

解决方案


如前所述,您可以为此使用 BeautifulSoup。

不确定您想要数据的方式,但下面的代码将创建一个字典列表,其中包含来自列的键和来自JIRA列的值Type

您可以使用其他方法将数据放入其他类型的结构中。

from bs4 import BeautifulSoup

html = """
<pre><br /></pre>
<p class="auto-cursor-target"><br /></p>
<table><colgroup><col /><col /></colgroup>
<tbody>
<tr>
<th>JIRA</th>
<th>Type</th></tr>
<tr>
<td>CALX-582</td>
<td><span>Action-Item</span></td></tr>
<tr>
<td>CALX-736</td>
<td><span>Action-Item</span></td></tr>
<tr>
<td>CALX-735</td>
<td><span>Action-Item</span></td></tr>
<tr>
<td>CALX-792</td>
<td><span>Action-Item</span></td></tr>
<tr>
<td>CALX-1563</td>
<td><span>Action-Item</span></td></tr>
<tr>
<td>CALX-1567</td>
<td><span>Action-Item</span></td></tr>
<tr>
<td>CALX-1861</td>
<td>Bug</td></tr></tbody></table>
<p class="auto-cursor-target"><br /><br /></p>
"""

soup = BeautifulSoup(html, 'html.parser')

jira = soup.select('td')

data = [{jira[idx].getText(): jira[idx+1].getText()} for idx in  range(0, len(jira), 2)]

print(data)

推荐阅读