私が見つけられない問題であなたの助けが必要です...
tr と td を含む html テーブルがあります。
例えば:
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
</td>
</tr>
<tr>
<td colspan="2">
<br />
<h2>
Macros
</h2>
</td>
</tr>
<tr>
<td>
#define
</td>
<td>
<a class="el" href="#g3e3da223d2db3b49a9b6e3ee6f49f745">
SND_LSTINDIC
</a>
</td>
</tr>
<tr>
<td class="mdescLeft">
</td>
<td class="mdescRight">
liste sons indication
<br />
</td>
</tr>
<tr>
<td colspan="2">
<br />
<h2>
Définition de type
</h2>
</td>
</tr>
<tr>
<td class="memItemLeft" nowrap="nowrap" align="right" valign="top">
typedef void(*
</td>
<td class="memItemRight" valign="bottom">
<a class="el" href="#g73cba8bd62d629eb05495a5c1a7b2844">
f_sndChangeFunc
</a>
)(
<a class="el" href="#g4ab7db37a42f244764583a63997489a8">
e_sndSound
</a>
i_eSound,
aBOOL
i_bStart,
aBYTE
i_byDisableModule)
</td>
</tr>
<tr>
<td class="mdescLeft">
</td>
<td class="mdescRight">
Fonction rappel sur départ/arrêt bip.
<a href="#g73cba8bd62d629eb05495a5c1a7b2844">
</a>
<br />
</td>
</tr>
<tr>
<td colspan="2">
<br />
<h2>
Énumérations
</h2>
</td>
</tr>
<tr>
<td class="memItemLeft" nowrap="nowrap" align="right" valign="top">
enum
</td>
<td class="memItemRight" valign="bottom">
<a class="el" href="#g4ab7db37a42f244764583a63997489a8">
e_sndSound
</a>
{
}
</td>
</tr>
<tr>
<td class="mdescLeft">
</td>
<td class="mdescRight">
identificateurs sons
<a href="group__Sound.html#g4ab7db37a42f244764583a63997489a8">
Plus de détails...
</a>
<br />
</td>
</tr>
</table>
このテーブルをいくつかに分割しようとしています。出たいです
タイトルを付けて、次の行でテーブルを作成します。たとえば、ここで期待される結果は次のようになります。
<h2>
Macros
</h2>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
</td>
</tr>
<tr>
<td colspan="2">
<br />
</td>
</tr>
<tr>
<td>
#define
</td>
<td>
<a class="el" href="#g3e3da223d2db3b49a9b6e3ee6f49f745">
SND_LSTINDIC
</a>
</td>
</tr>
<tr>
<td class="mdescLeft">
</td>
<td class="mdescRight">
liste sons indication
<br />
</td>
</tr>
</table>
<h2>
Définition de type
</h2>
<table>
<tr>
<td class="memItemLeft" nowrap="nowrap" align="right" valign="top">
typedef void(*
</td>
<td class="memItemRight" valign="bottom">
<a class="el" href="#g73cba8bd62d629eb05495a5c1a7b2844">
f_sndChangeFunc
</a>
)(
<a class="el" href="#g4ab7db37a42f244764583a63997489a8">
e_sndSound
</a>
i_eSound,
aBOOL
i_bStart,
aBYTE
i_byDisableModule)
</td>
</tr>
<tr>
<td class="mdescLeft">
</td>
<td class="mdescRight">
Fonction rappel sur départ/arrêt bip.
<a href="#g73cba8bd62d629eb05495a5c1a7b2844">
</a>
<br />
</td>
</tr>
</table>
<h2>
Énumérations
</h2>
<table>
<tr>
<td class="memItemLeft" nowrap="nowrap" align="right" valign="top">
enum
</td>
<td class="memItemRight" valign="bottom">
<a class="el" href="#g4ab7db37a42f244764583a63997489a8">
e_sndSound
</a>
{
}
</td>
</tr>
<tr>
<td class="mdescLeft">
</td>
<td class="mdescRight">
identificateurs sons
<a href="group__Sound.html#g4ab7db37a42f244764583a63997489a8">
Plus de détails...
</a>
<br />
</td>
</tr>
</table>
HTMLコードを解析するためにpythonとBeautifulSoupを使用しています。私はこれを最初に試しました:
from BeautifulSoup import BeautifulSoup, NavigableString
import sys
import os
soup = BeautifulSoup(allHtml)
for table in htmlSoup.findAll("table"):
h2s = table.findAll("h2")
if h2s is not []:
FirstH2 = True
LastH2 = False
for i, h2 in enumerate(h2s):
if h2 is not []:
LastH2 = ( i == len(h2s) - 1 )
h2.parent.replaceWithChildren() # <td> deleted
h2.parent.replaceWithChildren() # <tr> deleted
print h2.parent
if FirstH2:
h2.replaceWith( h2.prettify() + '<table>' )
#h2_tag_idx = h2.parent.contents.index(h2) # other method to add Tags
#h2.parent.insert(h2_tag_idx + 1, '<b>OK</b>')
else:
h2.replaceWith( '</table>' + h2.prettify() + '<table>' )
FirstH2 = False
print soup.prettify()
しかし、それは私のタグを HTML に相当する ASCII コードに置き換えます...
また、テーブル内のすべてのコンテンツを取得しようとしましたが、いくつかのテーブルを再構築しようとした後、スープに再度入れましたが、失敗しました...
また、テーブルを文字列で取得し、文字列を区切り文字として分割し、すべてのサブテーブルをスープに入れようとしましたが、失敗しました...
誰かがアイデアを持っているなら、それは素晴らしいことです!
前もって感謝します!