0

!--This is the first table from where i get 4 id's (abc1---abc4) which i need to match with the table below and get the required data--!
<table width="100%" border="0" class=""BigClass">
<tbody>..</tbody>
</table>

!--This is the second table --!
<table width="100%" border="0" class=""BigClass">
<tbody>
<tr align="left">
<td valign="top" colspan="2">
<strong>   1.              
             First Topic
</strong>
<a name="abc1" id="abc1"></a>
</td>
</tr>
!--This is the place where the first speaker and his/her text comes---!
<tr align="left">
<td style="text-align:justify;line-height:2;padding-right:10px;" colspan="2">
<strong> "   First Speaker    "    </strong>
<br>
"    Some Text   "
</td>
</tr>

!--This is where the second speaker comes in---!
<tr align="left">
<td style="text-align:justify;line-height:2;padding-right:10px;" colspan="2">
<strong>  "  Second Speaker    "   </strong>
<br>
     "   Some Text   "    
</td>
</tr>

<tr><td colspan="2"><br></td></tr>
<tr><td colspan="2"><br></td></tr>

!--Then here comes the row with another id--!
<tr align="left">
<td valign="top" colspan="2">
<strong>   2.              
             Second Topic
</strong>
<a name="abc2" id="abc2"></a>
</td>
</tr>
!--Just like before, this will also have set of speakers who have some text--!

BigClass という同じクラス名を持つ 2 つのテーブルがあります。最初のテーブルから、abc1、abc2、abc3、abc4 の 4 つの ID を抽出しました。ここで、これらの ID が 2 番目のテーブルの ID と一致した後、この 2 番目のテーブルに存在するかどうかを確認したいと思います。スピーカーとそれらのスピーカーのテキストを抽出します。データを抽出したい 2 番目のテーブル ROM のコード構造を確認できます。

4

1 に答える 1

0

スピーカーとテキスト情報を抽出する最良の方法は、リスト内のすべての ID と別のリスト内のすべてのスピーカー情報を抽出することです。次に、必要な ID を相互参照して、対応するスピーカー情報を取得します。

ここで、キーを ID、値を話者情報として辞書を作成します。スピーカー情報を含むすべてのフィールドで td フィールドにスタイル属性が定義されているという条件で、スピーカー情報を見つけました。

HTML から情報を抽出するために、BeautifulSoupライブラリを使用しています。

from bs4 import BeautifulSoup
from itertools import izip

soup = BeautifulSoup(open('table.html'))
idList = []
speakerList = []
idsRequired = ['abc1','abc2']
for a in soup.findAll('a'):
    if 'id' in a.attrs.keys():
        idList.append(a.attrs['id'])

for i in soup.findAll('td'):
    if 'style' in i.attrs.keys():
        speakerList.append(i.text)

for key,value in izip(idList,speakerList):
    if key in idsRequired:
        print value 

これにより、次のような出力が得られます。

"     First speaker   "
"   Some text     "


"     Second speaker   "
"   Some text     "
于 2013-08-07T20:45:13.860 に答える