2011-06-28 107 views
0

我試圖解析使用BeautifulSoup下面看到的第二個表。我無法識別第一個表格和第一個表格,因爲表格屬性完全相同。我如何訪問表中的信息,例如name = PATHWAY?什麼到目前爲止,我已經習慣了嘗試訪問該表:HTML解析表 - BeautifulSoup

table = soup.find('table', {'name':'PATHWAY'}) 

我收到「無」的響應,雖然我知道表是存在的。對我而言,這意味着我區分兩者的方法無效。有什麼建議麼?

<table border="0" cellspacing="0" cellpadding="0" bgcolor="#DCDCDC"> 
<tr><td> 

    <table border="0" cellspacing="1" cellpadding="3"> 
<tr> 
<td class=ue><a name="REACTION TYPE">REACTION TYPE</td><td class=ue>ORGANISM</td><td class=ue>COMMENTARY</td><td class=ue>LITERATURE</td></tr> 
<tr class=tr1> 
<td class=g>condensation</td><td class=no>-</td><td class=no>-</td><td class=no>-</td></tr> 
    </table> 
</td></tr></table> 
<br> 

<table border="0" cellspacing="0" cellpadding="0" bgcolor="#DCDCDC"> 
<tr><td> 


    <table border="0" cellspacing="1" cellpadding="3"> 
<tr> 
<td class=ue><a name="PATHWAY">PATHWAY</td><td class=ue>KEGG Link</td><td class=ue>MetaCyc Link</td><td class=ue></td></tr> 
    <table> 
+0

你解決了你的問題嗎? –

回答

-1

第一:

table = soup.find('table' {'name':'PATHWAY'} 

是沒有適當的Python代碼。

這場比賽應該怎麼樣?

這隻會匹配。

您可以遍歷每個表並在每個表內執行相關檢查,或者遍歷樹的每個單個節點,直到找到相關節點,然後遍歷節點層次結構(通過遵循父節點),直到您找到一個表格元素。 recursiveChildGenerator()可用於迭代所有節點(如在平面列表中)。

+0

代碼可能不是正確的python,但可以通過BeautifulSoup使用。我會嘗試遍歷每個表格,看看它是如何工作的。 – Dyna

+0

代碼在語法上*不正確* –

+0

嗯......它錯過了一個逗號,但是你的版本丟失了一個括號,所以我不會抱怨太大聲。 –

-1

您可以使用find函數形式:

soup.find(lambda tag: (tag.name=='table' and \ 
    (tag.find('a', attrs={'name': 'PATHWAY'}) is not None)))