私は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']
これは、:
XPath 式が評価されるコンテキスト ノードは、すべての
tr
要素の親ですが、質問には表示されていません。各要素には、属性値が1
tr
つだけあり、属性値が1つだけあります。td
class
'name'
td
class
'desc'