programing

다음 형제/X를 선택하는 방법XPath를 사용한 ML 태그

jooyons 2023. 10. 12. 22:43
반응형

다음 형제/X를 선택하는 방법XPath를 사용한 ML 태그

저는 (Newegg에서) HTML 파일을 가지고 있으며, 그들의 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>

결국 각각의 데이터를 저장할 수 있는 Brand, Series, Cores, Socket 타입으로 구성된 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 식을 평가하는 컨텍스트 노드는 다음의 상위 노드입니다.trelements -- 질문에 표시되지 않습니다.

  2. 각각tr원소는 오직 하나를 갖습니다.td와 함께class속성값'name'단 한명만td와 함께class속성값'desc'.

해보세요.following-sibling축()following-sibling::td).

완전성을 위해 - 위의 승인된 답변에 추가 - 요소 유형에 관계없이 형제에 관심이 있는 경우 변형을 사용할 수 있습니다.

following-sibling::*

언급URL : https://stackoverflow.com/questions/3139402/how-to-select-following-sibling-xml-tag-using-xpath

반응형