如何使用xpathselect以下sibling / xml标签
我有一个HTML文件(来自Newegg),他们的HTML组织如下。 规格表中的所有数据都是“ desc ”,而每个部分的标题都是“ 名称”。 以下是来自Newegg页面的两个数据示例。
<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类(已经设置),包括品牌,系列,核心和socketstypes的存储每个数据的类。 这是我能想到去做这件事的唯一方法:
if(parsedDocument.xpath(tr/td[@class="name"])=='Brand'): CPU.brand = parsedDocument.xpath(tr/td[@class="name"]/nextsibling?).text
并为此做其余的价值。 我将如何完成这个下一步,是否有一个更简单的方法来做到这一点?
我将如何完成这个下一步,是否有一个更简单的方法来做到这一点?
您可以使用 :
tr/td[@class='name']/following-sibling::td
但我宁愿直接使用 :
tr[td[@class='name'] ='Brand']/td[@class='desc']
这假设 :
-
评估XPathexpression式的上下文节点是所有
tr
元素的父节点 – 在您的问题中未显示。 -
每个
tr
元素只有一个td
其中class
属性的值为'name'
,只有一个td
的class
属性值为'desc'
。
尝试following-sibling
轴( following-sibling::td
)。