あなたのように、あなたの利点にHTMLのツリー構造を使用しているようなトップダウンのアプローチを行う代わりに。私はこれを他の同様のフォーマットのページに一般化したいと思っています。あなたができることは、 "Max Unison Chance"でセルをアンカーポイントとして扱い、Beautiful Soupが作成する構文木をトラバースすることですあなたが探しているセル。
element = soup.find(text='Max Unison Chance')
:ここでここでは、直接呼び出すことによって、「マックス・ユニゾンチャンス」を含むHTMLタグを取得することができます説明セルとあなたが/
<td style="height: 29px; background-color:#3F2D18; color:#ffffff; font-size:7pt;"> <b><span style="cursor:help;" title="Maximum stats used during a Unison Chance. It is the total of both stats with +198.">Max Unison Chance</span>:</b>
</td><td colspan="2" style="background-color:#5B4F3D; color:#ffffff;"> 10004
</td>
探しているセルの両方を含むHTMLです
これは "Max Unison Chance"というテキストを持つ要素を取得します。 次に、探している番号を含むタグが、現在持っている要素との相対的な位置にあるかどうかを調べると、 10004のセルの横にある要素に到達するには、3つのノードに移動する必要があることがわかります。我々は我々が持っている要素の親属性を使用して、連鎖の属性を使用することができ、このセルに移動するには
:
great_grandparent = element.parent.parent.parent
我々は今では私たちのgreat_grandparentのnext_siblingを取得する必要があります:
target_cell = great_grandparent.next_sibling
最後に、要素のテキスト値を取得して、それをクリーンアップします。
そして、一緒にそれをすべて置く:次ので
result = cell.next.next.next.strip()
:
from bs4 import BeautifulSoup
import requests
url = ('http://unisonleague.wikia.com/wiki/Brynhildr,_Dual_Lancer_(Gear)')
r = requests.get(url)
data = r.text
soup = BeautifulSoup (data , 'html.parser')
element= soup.find(text='Max Unison Chance')
result = element.parent.parent.parent.next_sibling.text.strip()
をこれを行うための別の方法は、あなたがして、結果を置き換えることができますので、代わりに木のオーダーの解析順序を使用しないで属性は、使用しているパーサーの仕組みに基づいて次の要素を参照します。
xpath – bigbounty
を使用すると便利です。[最小限、完全で、検証可能] [https://stackoverflow.com/help/mcve]つまり、実行する必要がありますスタンドアローン。 – mikuszefski