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

时间:2010-11-02 12:29:36

标签: xpath html-agility-pack

我尝试使用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 atribute包含url,url start 同 http://213.215.107.125/fotky
  2. 我知道alt属性Url的价值 有     变量长度和HTML文档     包含其他带有url的img标签     的 http://213.215.107.125/fotky
  3. 我知道img标签的alt属性(Fotka:Myke015))
  4. 任何进步,我尝试了很多方法,但没有任何效果。

    最后我试试这个:

        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);
                }
            }
        }
    

2 个答案:

答案 0 :(得分:3)

您的XPath选择img个节点,而不是属于它们的src属性。

而不是(选择具有src属性的所有图像标记):

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

使用此选项(选择所有src元素的子节点的img属性):

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

答案 1 :(得分:0)

此XPath 1.0表达式:

//a[@alt='Fotka: MyKe015']/@src