2012-07-10 13 views
5

Küçük bir Download-Roboter yazıyorum, bu, alt katmanlarda kendiliğinden bağlantılar arıyor. i bulmak için gerekenlerHTMLAgilityPack kullanarak öznitelik data-url'i seçin Eleman

bir html-Page tüm bağlantılar (aynı zamanda bağlantılar PGN olarak dosyaları .jpg bağlantılar için, .pdf, .html, .... - dosyaları) vardır

Tüm a-href linklerini bulmak için html-agilitypack kullanıyorum.

örnek kod:

foreach (HtmlNode link in htmlDocument.DocumentNode.SelectNodes("//a[@href]")) 
{ 
    HtmlAttribute attribute = link.Attributes["href"]; 
    links.Add(attribute.Value); 
} 

Ama aynı zamanda veri URL'ler bulmak istiyoruz.

Verileri bulmak için hangi XPath sözdizimini kullanmalıyım? Bir htmlcode içinde bir örnek veri-url:

<div class="cbreplay" data-url="2012\edmonton\partien.pgn"></div> 

ihtiyacım "2012 \ edmonton \ partien.pgn" Bu örnekte dışına. Bunu XPath sözdizimi ile nasıl anlayabilirim?

İyi bir hata yaparsam en iyi dileklerimle anlat bana. Bu benim ilk sorum.

cevap

11

şu istediğini yapmalıdır:

foreach (HtmlNode divNode in htmlDocument.DocumentNode.SelectNodes("//div[@data-url]")) 
{ 
    HtmlAttribute attribute = divNode.Attributes["data-url"]; 
    links.Add(attribute.Value); 
} 

Etkili, deyim //div[@data-url] veri-url niteliği olmayan tüm düğümlerin seçmelidir. Daha sonra bu özelliği çekiyoruz.

Bu özelliğe sahip divlardan başka düğümler varsa, //*[@data-url] hile yapmalıdır.

+0

çok teşekkürler, mükemmel çalışıyor. –

+2

, '' 'yerine' div '-' '// * [@ data-url]' 'kullanmak daha esnek olabilir. O lanet html yazarlar html değiştirmeye devam ediyor! – user3791372

İlgili konular