使用HtmlAgilityPack-Xpath,RegExp解析HTML文檔

html-agility-pack xpath

我嘗試使用HtmlAgilityPack從html解析圖像URL。在html doc中我有img標籤:

<a class="css_foto" href="" title="Fotka: MyKe015">
   <span>
      <img src="http://213.215.107.125/fotky/1358/93/v_13589304.jpg?v=6" 
           width="176" height="216" alt="Fotka: MyKe015" />
   </span>
</a>

我需要從這個img標籤獲取atribute src。我需要這個: http//213.215.107.125/fotky/1358/93/v_13589304.jpg?v = 6。

我知道這個:

  1. Src屬性包含url,url以http://213.215.107.125/fotky開頭
  2. 我知道alt屬性的值url有變量長度,而html doc也包含其他帶有url的img標籤,它以http://213.215.107.125/fotky開頭
  3. 我知道img標籤的alt屬性(Fotka:Myke015))

任何進步,我嘗試了很多方法,但沒有什麼工作好。

最後我試試這個:

    List<string> src;

    var req = (HttpWebRequest)WebRequest.Create("http://pokec.azet.sk/myke015");
    req.Method = "GET";

    using (WebResponse odpoved = req.GetResponse())
    {
        var htmlDoc = new HtmlAgilityPack.HtmlDocument();
        htmlDoc.Load(odpoved.GetResponseStream());

        var nodes = htmlDoc.DocumentNode.SelectNodes("//img[@src]");
        src = new List<string>(nodes.Count);

        if (nodes != null)
        {
            foreach (var node in nodes)
            {
                if (node.Id != null)
                    src.Add(node.Id);
            }
        }
    }

熱門答案

您的XPath選擇img節點,而不是屬於它們的src屬性。

而不是(選擇具有src屬性的所有圖像標籤):

var nodes = htmlDoc.DocumentNode.SelectNodes("//img[@src]");

使用此選項(選擇作為所有img元素的子節點的src屬性):

var nodes = htmlDoc.DocumentNode.SelectNodes("//img/@src");


許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因