2017-05-16 11 views
0

テーブルボディ内に特定のtrタグを見つけるにはどうすればよいですか?たとえば、次の点を考慮します。美しいスープは、特定のtrタグを見つける

<table cellspacing="1" cellpadding="3" class="tablehead"> 
    <tbody> 
    <tr class="stathead">...</tr> 
    <tr class="colhead">...</tr> 
    <tr class="oddrow team-23-2046">...</tr> 
    <tr class="evenrow team-22-1234">...</tr> 
    <tr class="oddrow team-25-2326">...</tr> 
    <tr class="evenrow team-25-2262">...</tr> 
    </tbody> 
</table> 

私はすべての「oddrow」と「evenrow」タグではなく、「stathead」または「colhead」が必要です。私はスライスに、このような何かを行うことができました:

for data in soup.find_all("table", {"class": "tablehead"}): 
    for row in data.find_all('tr')[2:]: 
     print(row.text) 

しかし、私はいつも、私はむしろ、明示的oddrow」を検索したいので、私はそのコンテンツを廃棄していますすべてのページには、この形式を持っていることはよく分かりません/偶然 "。チーム番号もページごとに異なりますので、完全一致の場合はその番号を使用できません。

+0

正確にあなたの質問は何を? – DyZ

+0

TRを取得して、 'o'または 'e'で始まるクラスattrをテストするのはなぜですか? – Tony

答えて

2

あなたはこれを試すことができます。

soup.find("table", {"class": "tablehead"}).find_all("tr", {"class": ["oddrow", "evenrow"]}) 

soup = BeautifulSoup("""<table cellspacing="1" cellpadding="3" class="tablehead"> 
    <tbody> 
    <tr class="stathead">...</tr> 
    <tr class="colhead">...</tr> 
    <tr class="oddrow team-23-2046">...</tr> 
    <tr class="evenrow team-22-1234">...</tr> 
    <tr class="oddrow team-25-2326">...</tr> 
    <tr class="evenrow team-25-2262">...</tr> 
    </tbody> 
</table>""", "html.parser") 

soup.find("table", {"class": "tablehead"}).find_all("tr", {"class": ["oddrow", "evenrow"]}) 
#[<tr class="oddrow team-23-2046">...</tr>, 
# <tr class="evenrow team-22-1234">...</tr>, 
# <tr class="oddrow team-25-2326">...</tr>, 
# <tr class="evenrow team-25-2262">...</tr>] 
+0

私はそれを試してみましょう。 BSは本当に私を混乱させる。私は本当に多くのhtmlコーディングの知識を持っていないので、私は本当にこれになると苦労します。 – Biggen

関連する問題