【问题标题】:Extracting via HtmlAgilityPack通过 HtmlAgilityPack 提取
【发布时间】:2012-04-17 02:42:23
【问题描述】:

我正在使用 HtmlAgilityPack 并尝试从 html 中提取图像名称。这是我的 html 字符串:

sHtml = "<HTML><HEAD></HEAD><BODY>Here are some images.</br>1) < IMG style='MARGIN-BOTTOM: 20px; MARGIN-LEFT: 20px' align=right src='images/sample001.jpg'>2) < IMG style='MARGIN-BOTTOM: 25px; MARGIN-LEFT: 25px' align=right src='images/sample002.png'></br> And some docs as well.</br>1) href='javascript:parent.POPUP({url:'testDoc001.htm',type:'shared',width:600,height:645})'></br>2) href='javascript:parent.POPUP({url:'testDoc002.html',type:'shared',width:700,height:712})'></br></BODY></HTML>"

在 WPF C# 中,我将此字符串传递给以下例程:


private static List<string> ExtractHtmlInfo(string sHtml)
{
    HtmlDocument doc = new HtmlDocument();
    doc.Load(new StringReader(sHtml));
    HtmlNode root = doc.DocumentNode;

    List<string> anchorTags = new List<string>();

    //foreach (HtmlNode link in root.SelectNodes("//a"))
    foreach (HtmlNode link in root.SelectNodes("//img"))
        {
        string att = link.OuterHtml;
        anchorTags.Add(att);
    }

    return anchorTags;
}

当我单步执行代码时,我看到该行:

string att = link.OuterHtml;

提供整个

我希望 anchorTags 只包含文件的文件夹和名称,如下所示:

[0] = images/sample001.jpg
[1] = images/sample002.png

所以,我需要 .OuterHtml 以外的其他内容,但找不到。

谁能帮忙?

【问题讨论】:

    标签: html-agility-pack


    【解决方案1】:

    您正在寻找图像元素的src 属性值:

    foreach (HtmlNode img in root.SelectNodes("//img"))
    {
        string att = img.Attributes["src"].Value;
        anchorTags.Add(att);
    }
    

    【讨论】:

    • 太棒了 Oded...正是我想要的。另一个问题,我将如何从同一个示例中提取字符串“testDoc001.htm”?我尝试使用 root.SelectNode("//html=") 但它不喜欢那样。
    • @AnnSanderson - href 元素的 href 属性将给出完整的内容。您可以使用string.Split 进一步拆分这些值。
    • 嗯...我使用了 ("//a") 和 href 属性,它给了我:'javascript:parent.POPUP({url:' 我做错了什么?跨度>
    • @AnnSanderson - 问题是 HTML 格式错误。 ' 用于分隔 href 属性,但在 javascript 部分中使用。
    • 有没有办法在不改变 html 的情况下解决这个问题,这样它就不会出现故障?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多