で親要素の最初の子を取得するI次のHTMLを持っている:パイソン - BeautifulSoup4
<table id="mytable">
<tr role="row">
<td>abc1</td>
<td>abc2</td>
<td>abc3</td>
<td class="hm">Data1</td>
<td>Data2</td>
<td class="hm">no</td>
<td class="hx">yes</td>
<td class="hm">Updated</td>
</tr>
<tr role="row">
<td>def1</td>
<td>def2</td>
<td>def3</td>
<td class="hm">Data3</td>
<td>Data4</td>
<td class="hm">no</td>
<td class="hx">no</td>
<td class="hm">Updated</td>
</tr>
<tr role="row">
<td>hij1</td>
<td>hij2</td>
<td>hij3</td>
<td class="hm">Data5</td>
<td>Data6</td>
<td class="hm">no</td>
<td class="hx">no</td>
<td class="hm">Updated</td>
</tr>
<tr role="row">
<td>klm1</td>
<td>klm2</td>
<td>klm3</td>
<td class="hm">Data7</td>
<td>Data8</td>
<td class="hm">no</td>
<td class="hx">yes</td>
<td class="hm">Updated</td>
</tr>
</table>
私は子供<td>
がある場合1を検索するには、次のやっているように、これらの<tr>
タグの倍数があります。 class="hx"
とタグとyes
のテキスト:
if (Soup.find('table', {'id' : 'mytable'}).find('td', text='yes', attrs={'class' : 'hx'})):
print "Found 'yes'"
しかし、私が発見された<tr>
の最初の<td>
タグに興味があります。私は次のことをやってみましたが、動作するようには思えない。また
print Soup.find('table', {'id' : 'mytable'}).find('td', text='yes', attrs={'class' : 'hx'}).parent.find('td')[0].text
、以下の作品が、私がわからない場合は特に、これを行うのは本当に引き出す方法のように思える何<td>
タグ2人の間に存在します:
print Soup.find('table', {'id' : 'mytable'}).find('td', text='yes', attrs={'class' : 'hx'}).previousSibling.previousSibling.previousSibling.previousSibling.previousSibling.previousSibling.text
もっと良い方法がありますか?何か不足していますか?
スローされますか? – RomanPerekhrest
'.previousSibling'のすべての作業で2番目の' print'が正しいですが、述べたように、他の ''タグが私が見つけたタグと最初のタグの間にいくつあるかはわかりません。 – rjbogz
もちろん、私はそれを更新しましたが、 'find( 'td'、text = 'yes'、attrs = {'class': 'hx'})'の最初のインスタンスが必要です。だから 'abc1'と' klm1'ではなく 'abc1'だけをここに書いてください。 – rjbogz