2012-05-03 3 views
0

HTML 민첩성 팩을 사용하여 html (-> xml) 문서 (아래)에서 데이터를 추출하려고합니다. "id=dealId_*****"이 포함 된 "div"은 관련성이 있습니다. 나는 "id=dealId_*****"을 가진 모든 "div"를 어떻게 카운팅하는지 알아낼 때 진행하는 법을 알고 있다고 생각합니다. 나는 XPath는-방법 "starts-with"을 사용하려했지만 작동하지 않았다XPath/HTML 민첩성 팩을 사용하여 특정 키워드를 포함한 모든 div를 추출합니다.

HtmlDocument doc = new HtmlDocument(); 
doc.LoadHtml(Sourcecode); 

int numberOfDIVs; 
numberOfDIVs = doc.DocumentNode.SelectNodes("//*[@id='jLocalDeals']/*[starts-with(@id, 'dealId_']").Count; 

    <div id="jLocalDeals" class="dealsBlock" style=""> 
    <h1> 
    <div id="dealId_5474417" class="jDeal LEISURE_OFFERS"> 
    <div id="dealId_5476688" class="jDeal SHOPPING"> 
    <div id="dealId_5445019" class="jDeal TICKETS1 RESTAURANT1"> 
    <div class="wrapper3Deals"></div> 
    <div id="dealId_5474286" class="jDeal BEAUTY"> 
    <div id="dealId_5476685" class="jDeal LEISURE_OFFERS"> 
    <div id="dealId_5474466" class="jDeal SERVICES"> 
    <div class="wrapper3Deals"></div> 
    <div id="dealId_5466810" class="jDeal BEAUTY"> 
    <div id="dealId_5425417" class="jDeal SERVICES"> 
    <div id="dealId_5474329" class="jDeal SHOPPING"> 
    <div class="wrapper3Deals"></div> 
    <div id="dealId_5476703" class="jDeal SHOPPING"> 
    <div id="dealId_5476729" class="jDeal SHOPPING"> 
    <div id="dealId_5474702" class="jDeal HEALTHCARE"> 
    <div class="wrapper3Deals"></div> 
    <div id="dealId_5444044" class="jDeal TRAVEL1" style="display: block;"> 
    <div id="dealId_5474444" class="jDeal LEISURE_OFFERS" style="display: block;"> 
    <div id="dealId_5473774" class="jDeal TRAVEL1" style="display: block;"> 
    <div class="wrapper3Deals"></div> 
    </div> 

P.S는 : 불행하게도, 난 .NET 2.0을 사용하는 경우에만 수 있어요. 바로 가기를 원하는 경우

//div[@id='jLocalDeals']//div[contains(@id,'dealId')] 

, 당신은 XPath는 내 COUNT() 함수를 사용할 수 있습니다 :

답변

0

사용은() 함수가 포함되어 또한

count(//div[@id='jLocalDeals']//div[contains(@id,'dealId')]) 

을, 그 이유는 시작-로 귀하의 xpath에서 작동하지 않는 이유는 인 <h1>의 하위 항목이 아닌 //div[@id='jLocalDeals'] 하위 항목을 확인하기 때문입니다. (

//div[@id='jLocalDeals']//div[starts-with(@id,'dealId')] 

또는

//div[@id='jLocalDeals']/*/*[starts-with(@id,'dealId')] 

희망이 도움이, 나는 아무것도 명확히해야하는 경우 알려 주시기 ...

+0

감사합니다,하지만이 또한 작동하지 않습니다 시작-로 사용 NullReferenceException) :(이것은 웹 페이지입니다. http://www.groupon.de/alle-deals/aachen. 경로 내에서 count()를 사용하면 무엇을 의미합니까? – think

+0

XPath 함수가 있습니다. count()는 노드의 수를 반환합니다. HtmlDocument.Count()를 사용하는 것만 큼 다른 것을 지적 할 수 있습니다. // div [@ id = 'jLocalDeals']를 실행할 때 아무것도 얻지 못했습니까? – JWiley

+0

단순히 // div [@ id = 'jLocalDeals']를 실행하면 NumberofDIVs = 1 [And this] (http://www.imgbox.de/users/public/images/1dMjr3WXhI.JPG)로 돌아갑니다. 네가 나를 도울 수 있기를 바랍니다. – think

관련 문제