2017-10-12 42 views
0
<article class="swiper-slide" itemscope itemtype="http://schema.org/Movie" 
         data-list="Home - Highlights" 
         data-name="Thor: Ragnarok" 
         data-id="19730" 
         data-brand="Disney" 
         data-position="2" 
         > 

該頁面包含像2-3 swiper-slides,我需要檢查「數據名稱」是否包含特定的字符串。檢查節點是否包含使用HtmlAgilityPack的字符串

@Edit:

HtmlWeb _Web = new HtmlWeb(); 
      HtmlAgilityPack.HtmlDocument htmldoc = _Web.Load(Url); 
      htmldoc.OptionFixNestedTags = true; 
      try 
      { 
       foreach (HtmlNode x in htmldoc.DocumentNode.SelectNodes("//div[@class='swiper-slide']")) 
       { 
        // var op = x.SelectNodes("div[@class='data-name']"); 
        Console.WriteLine(x.SelectNodes("data-name")); 
       } 
      } 
      catch (Exception) 
      { 
       Console.WriteLine("Cant get info!"); 
      } 

對不起,我忘了張貼代碼,我可以得到所有節點的刷卡滑「,但如何獲取數據-name值?

+0

那麼有什麼阻止你這樣做?如果「頁面包含2-3個swiper-slides」不能有多個「特定的字符串」? –

+0

根本不是,我只是檢查字符串是否只出現過一次。 –

回答

1

試試下面的代碼

var html = @"<html> 
<article class=""swiper-slide"" itemscope itemtype=""http://schema.org/Movie"" 
      data-list=""Home - Highlights"" 
      data-name=""Thor1"" 
      data-id=""19730"" 
      data-brand=""Disney"" 
      data-position=""2"" 
      ></article> 
<article class=""swiper-slide"" itemscope itemtype=""http://schema.org/Movie"" 
      data-list=""Home - Highlights"" 
      data-name=""Thor2"" 
      data-id=""19730"" 
      data-brand=""Disney"" 
      data-position=""2"" 
      ></article> 
<article class=""swiper-slide"" itemscope itemtype=""http://schema.org/Movie"" 
      data-list=""Home - Highlights"" 
      data-name=""Thor3"" 
      data-id=""19730"" 
      data-brand=""Disney"" 
      data-position=""2"" 
      ></article> 
</html>"; 

var doc = new HtmlDocument(); 
doc.LoadHtml(html); 

var selected = doc.DocumentNode.SelectNodes(@"//article[@data-name=""Thor1""]/@data-name"); 

foreach (var node in selected) { 
    Console.WriteLine(node.InnerText); 
} 

這將輸出

Thor1 
+0

我只需要獲取數據名稱內的值,就像你知道的列表一樣? Thor1 Thor2 Thor3 –

+0

只需將/ @數據名追加到XPath –

+0

doens't在我的XPath上工作,做了什麼? –

0
int Swipers = 0; 
      HtmlWeb _Web = new HtmlWeb(); 
      HtmlAgilityPack.HtmlDocument htmldoc = _Web.Load(Url); 
      htmldoc.OptionFixNestedTags = true; 
      try 
      { 
       foreach (HtmlNode x in htmldoc.DocumentNode.SelectNodes(@"//article[@data-name]")) 
       { 
        // var op = x.SelectSingleNode("./data-name"); 
        // var op = x.SelectNodes("div[@class='data-name']"); 
        string result = x.GetAttributeValue("data-name", "null").ToLower(); 


        if (result.Contains("thor")) 
        { 
         // System.Diagnostics.Process.Start(Url); 
         MessageBox.Show("It Appears!"); 
         sendEmail(); 
        } 
        Console.WriteLine(result); 
        Swipers++; 
       } 
      } 
      catch (Exception) 
      { 
       Console.WriteLine("Cant get info!"); 
      } 

我不知道這是得到我想要的東西的最佳方式,但對我的作品時刻。

相關問題