2009-03-21 5 views
1

xPath를 사용하여 신문의 코드를 탐색하려고합니다. (연습을 위해서) 지금 당장은 주요 기사를 얻고 싶습니다. 그림과 작은 설명을 얻고 싶습니다. 하지만 지금까지 xPath에 숙련 된 사람이 아니기 때문에 작은 설명에 도달 할 수 없습니다.xPath 트래버스

이 코드를 withing에 :

<div class="margenesPortlet"> 

<div class="fondoprincipal"> 
<div class="margenesPortlet"> 
<a href='notas/n1092329.htm' ><img id="LinkNotaA1_Foto" src="http://i.oem.com.mx/5cfaf266-bb93-436c-82bc-b60a78d21fb6.jpg" height="250" width="300" border="0" /></a> 

<div class="piefoto_esto">Un tubo de 12 pulgadas al lado de la Vialidad Sacramento que provoc&#243; el corte del servicio durante toda la ma&#241;ana y hasta alrededor de las cuatro de la tarde. Foto: El Heraldo de Chihuahua</div> 

<div class="cabezaprincesto"><a href='notas/n1092329.htm' class='cabezaprincesto' >Sin agua 8 mil usuarios</a></div> 
<div class="resumenesto"><a href='notas/n1092329.htm' class='resumenesto' >La ruptura de una l&#237;nea en el tanque de rebombeo de agua Sacramento dej&#243; sin servicio a ocho mil usuarios, en once colonias del sur de la ciudad. </a></div> 
</div> 
</div> 

</div> 

내가했습니다 다음 기사의 제목을 (자막 유무에 관계없이) 사진을 얻을 싶어요. 내가 사용하여 얻을 수있는 이들 3 가지 :

// 사업부의 [에 @ 클래스 = 'fondoprincipal'] <가 - 나에게 메인 이미지 및 캡션을 제공

// A [클래스 @ = 'cabezaprincesto']/텍스트() < - 나에게 기사의 제목을 준다

그러나 나는 class = "resumenesto"인 div 인 작은 설명을 구할 수 없다. 왜냐하면 같은 id 때문에 아무것도 얻지 못했다. id는 HTML의 나머지 부분에서 반복적으로 사용되므로 많은 추가 항목을 반환합니다.

어떻게이 특별한 것을 얻을 수 있습니까? 그런 다음 나에게 다른 웹 페이지로 구문 분석하는 좋은 방법을 추천 해 주시겠습니까? 나는


에게 ...

편집을 아마 생각하고 그 값을 사용하여 일부 HTML을 작성하는 PHP는하지만 난 정말 모르겠어요했다 내가 "이 특정 하나"나는이를 얻는 방법이다 뜻 DIV 클래스 = "resumenesto", DIV 클래스 = "fondoprincipal"내 거주하는 한 ...


편집 2

감사합니다. 이제 xPath 통과가 조금 더 명확합니다. 그런데 두 번째 질문에 대해 다른 웹 페이지로 파싱하는 좋은 방법을 추천 해 주시겠습니까? 그 값을 사용하여 일부 HTML을 작성하는 PHP를 생각하고 있었지만 실제로는 확실하지 않습니다.

+0

다른 웹 페이지로 구문 분석하는 좋은 방법은 무엇을 의미합니까? – Alekc

답변

2

당신은 resumenesto의 "id"라고 말하지만 코드 예제에서 말하는 div에는 resumenesto 클래스가 있습니다. 이 같은의 XPath를 사용할 때

또한, :

//div[@class='resumenesto'] 

는 당신이 얻고있는 것은 그 XPath는 일치하는 노드의 목록입니다. 특별히 그 목록에 하나의 항목 만 참조 할 경우 그래서, 당신은 목록에있는 항목을 지정해야합니다

또한
//div[@class='resumenesto'][1] 

, 당신은 "이 특정 하나"가 무엇을 의미합니까? xpath 특이성을 알려주는 유일한 방법은 컨텍스트를 제공하는 것입니다 (예 : "다른 div에있는 클래스 resumenesto가있는 div"또는 "resumenesto 클래스가있는 div 중 첫 번째").

자세한 내용은 W3Schools' overview of XPath syntax을 참조하십시오.

편집 :

//div[@class='fondoprincipal']//div[@class='resumenesto'] 

이 문서 내에서 클래스 fondoprincipal와 후손의 DIV를 찾기 위해 XPath를 알려줍니다, 그 DIV 내 후손을 찾을 :

는 "fondoprincipal"내에 거주 사업부를 얻으려면 클래스 resumenesto와 div.

+0

죄송합니다. 코드를 잘못 작성하여 코드를 수정하려고합니다. – Tsundoku

+0

변경 사항을 반영하여 답변이 업데이트되었습니다. – Rahul

0

그리고 검색 범위를 좁히려 너무 사업부에 추가 할 수 있습니다

//div[@class='resumenesto']/a[@class='resumenesto']/text() 
0

는 당신이 필요로하는 시험에 효율적으로 활용하려면 다음 작업을

//div[@class='fondoprincipal']//a[@class='resumenesto'] 

참고이 (가) (isntead를 얻으려면 라울 (Raul)이 제안한 바와 같이 div의), 그 요소에서 당신은 텍스트를 얻는다.

페이지에 게재하는 것과 관련하여 asp.net에서 할 수 있습니다. XElement를 사용하여 값을로드 한 다음 XPathSelectElement를 사용하여 값 (http://msdn.microsoft.com/en-us/library/bb156083.aspx)을 가져옵니다.