How to select following sibling/xml tag using xpath

我是研究僧i 提交于 2019-11-26 04:22:30

问题


I have an HTML file (from Newegg) and their HTML is organized like below. All of the data in their specifications table is \'desc\' while the titles of each section are in \'name.\' Below are two examples of data from Newegg pages.

<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>

In the end I would like to have a class for a CPU (which is already set up) that consists of a Brand, Series, Cores, and Socket type to store each of the data. This is the only way I can think of to go about doing this:

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

And doing this for the rest of the values. How would I accomplish the nextsibling and is there an easier way of doing this?


回答1:


How would I accomplish the nextsibling and is there an easier way of doing this?

You may use:

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

but I'd rather use directly:

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

This assumes that:

  1. The context node, against which the XPath expression is evaluated is the parent of all tr elements -- not shown in your question.

  2. Each tr element has only one td with class attribute valued 'name' and only one td with class attribute valued 'desc'.




回答2:


Try the following-sibling axis (following-sibling::td).



来源:https://stackoverflow.com/questions/3139402/how-to-select-following-sibling-xml-tag-using-xpath

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!