XPathを使用して次の兄弟/XMLタグを選択する方法 質問する

XPathを使用して次の兄弟/XMLタグを選択する方法 質問する

私はHTMLファイル(Neweggから)を持っていますが、そのHTMLは以下のように構成されています。仕様表のすべてのデータは「説明' 各セクションのタイトルは '名前。以下は、Newegg ページのデータの例 2 つです。

<tr>
    <td class="name">Brand</td>
    <td class="desc">Intel</td>
</tr>
<tr>
    <td class="name">Series</td>
    <td class="desc">Core i5</td>
</tr>
<tr>
    <td class="name">Cores</td>
    <td class="desc">4</td>
</tr>
<tr>
    <td class="name">Socket</td>
    <td class="desc">LGA 1156</td>

<tr>
    <td class="name">Brand</td>
    <td class="desc">AMD</td>
</tr>
<tr>
    <td class="name">Series</td>
    <td class="desc">Phenom II X4</td>
</tr>
<tr>
    <td class="name">Cores</td>
    <td class="desc">4</td>
</tr>
<tr>
    <td class="name">Socket</td>
    <td class="desc">Socket AM3</td>
</tr>

最終的には、ブランド、シリーズ、コア、ソケット タイプで構成され、各データを格納する CPU クラス (すでにセットアップ済み) を用意したいと考えています。これを実現するには、次の方法しか思いつきません。

if(parsedDocument.xpath(tr/td[@class="name"])=='Brand'):
    CPU.brand = parsedDocument.xpath(tr/td[@class="name"]/nextsibling?).text

残りの値に対してもこれを実行します。 nextsibling を実現するにはどうすればよいでしょうか。また、これを行うより簡単な方法はありますか。

ベストアンサー1

どうすれば次の兄弟を実現できるでしょうか、また、これを行うより簡単な方法はありますか?

使用することができます:

tr/td[@class='name']/following-sibling::td

でも私は直接使いたい:

tr[td[@class='name'] ='Brand']/td[@class='desc']

これは、:

  1. XPath 式が評価されるコンテキスト ノードは、すべてのtr要素の親ですが、質問には表示されていません。

  2. 各要素には、属性値が1trつだけあり、属性値が1つだけあります。tdclass'name'tdclass'desc'

おすすめ記事