0

私が取り組んでいるHTML構造は次のとおりです。

<tr showhide="show" style="display: table-row; ">
            <td class="monthlyCost">£18<span>.50</span></td>
                      <td class="phoneCost">£299.99</td>
                      <td><span class="lowLight">24 Months</span></td>
            <td>200</td>
            <td>Unlimited</td>
            <td class="dataAllowance">100MB</td>
            <td class="extras">

次の Python コードを使用して情報を抽出しています。

minutes       = tariff_link_soup.findAll('td', {"class": False})
texts         = tariff_link_soup.findAll('td', {"class": False})

問題:tdこの 2 つの( <td>200</td>& <td>Unlimited</td>) タグで言及されている情報を、2 つの異なる列分とテキストに入れたい。24 Monthsしかし、クラスを false として定義する私のメソッドは、3 つの引数を見つけます200&Unlimited継続的に。

私は問題を理解していますが、その解決策を考案することはできません。それには2つの部分があります.1つ目はlowlightclass にデータを入れたくない、2つ目は次の2つのtdタグのデータを2つの異なる列に入れたい、2つを2つの列に分けることができます.200 Unlimited

この問題を解決するために私を助けてください。

4

1 に答える 1

0

BeautifulSoup 3を使用している場合、正しい呼び出しは次のようになります。

.findAll('td', {'class': None})

それは私に与えます:

>>> results = s.findAll('td', {'class': None})
>>> results
[<td><span class="lowLight">24 Months</span></td>, <td>200</td>, <td>Unlimited</td>]

これを2回呼び出すと、との両方minutesで同じデータが取得されtextsます。テーブルの列は変更されないと想定しているため、インデックスを使用する必要があります。

>>> minutes = results[1]
>>> texts = results[2]
>>> minutes, texts
(<td>200</td>, <td>Unlimited</td>)
于 2013-02-06T13:59:26.290 に答える