我使用BeautifulSoup從表格中提取數據。這張表中的球員列出了Transfers In/Transfers Out小組負責人的名單,所有這些球員都被歸類爲一個「小組組長」,指明他們將要參加的橄欖球隊。我想循環遍歷每個團隊,並隨後遍歷每個小組負責人(轉入/轉出),以便根據球員是否列入轉入或轉出,將我的團隊負責人(團隊)指定爲傳入球隊或傳出球隊。下面是HTML:如何使用BeautifulSoup在Python中的子組頭之間提取數據?
<tr class="group-head">
<th colspan="4"><h3><a href="/teams/england/arsenal-fc/">Arsenal</a></h3></th>
</tr>
<tr class="subgroup-head">
<th colspan="4">Transfers in (€25.5M)</th>
</tr>
<tr class="odd">
<td class="date"><span class='timestamp' data-value='1341093600' data- format='mm/dd/yy'>07/01/12</span></td>
<td class="player"><span class="flag_16 left_16 france_16_left"></span>O. Giroud</td>
<td class="team">Montpellier</td>
<td class="type">€ 12M</td>
</tr>
我將通過分組頭類重複獲取數據,但這樣我就可以不看標籤下面的數據tr標籤與每個子組結束。我試圖讓輸出與此格式的詞典:
{播放器:爲了團隊,從團隊,價格,日期]}
如何搶HTML?
UPDATE:
我開始一個循環,通過兄弟姐妹來迭代,因爲每一個被連續兩次的人隔開,但它仍然有問題。有更容易的方法嗎?我想,以確保它不會趕上球隊或其他亞類:
teams = table.findAll('tr', {'group-head'})
inout = table.findAll('tr', {'subgroup-head'})
for team in teams:
for direction in inout:
details = direction.next_sibling.next_sibling
print details.text.encode('utf-8')
while details.next_sibling.next_sibling:
if details.next_sibling.next_sibling not in inout:
if details.next_sibling.next_sibling not in teams:
print 'NEXT ONE'
details = details.next_sibling.next_sibling
print details.text.encode('utf-8')
else:
break
它似乎並不想過去的一線隊,並增加額外的休息不工作。
如果每個子羣只有一個玩家,那麼這將起作用,但是每個區域都有多個玩家,所以它無法遍歷所有這些玩家。我試圖看看我是否可以打電話給next_sibling.next_sibling,直到它達到另一個子組頭... – user1549620 2012-07-24 20:12:39
@ user1549620它看起來像每個玩家都在一排,所以你只需要遍歷next_sibling尋找
相關問題