[xml] xpath를 사용하여 다음 형제 / xml 태그를 선택하는 방법

Newegg의 HTML 파일이 있으며 HTML은 아래와 같이 구성됩니다. 사양표의 모든 데이터는 ‘ desc ‘이고 각 섹션의 제목은 ‘ name입니다. ‘아래는 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 (이미 설정 됨)에 대한 클래스를 갖고 싶습니다. 이것이 제가 이것을 할 수있는 유일한 방법입니다.

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

이것은 다음을 가정합니다 .

  1. XPath 표현식이 평가되는 컨텍스트 노드는 tr질문에 표시되지 않은 모든 요소 의 부모입니다 .

  2. tr요소는 하나 가지고 tdclass값 특성 'name'과 하나 tdclass값 특성 'desc'.


답변

following-sibling축 ( following-sibling::td)을 시도하십시오 .


답변