如何使用htamlagilitypack从html文件中提取所有http链接,然后提取标签之间的http链接?

时间:2013-11-15 22:11:33

标签: c# html-agility-pack

我正在尝试这段代码:

private void htmlparsing(string htmlfile)
        {
            List<string> test = new List<string>();
            HtmlDocument doc = new HtmlDocument();
            doc.Load(htmlfile);
            foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
            {
                HtmlAttribute att = link.Attributes["href"];
                test.Add(att.Value);  
            }
            doc.Save(@"d:\file.htm");
        }

这是我正在处理的html文件:https://skydrive.live.com/redir?resid=EB1C71C44C3976D5!318&authkey=!AKxxwSboig3BQpo

当我使用断点并在工作完成后在List测试中观看时,我看到了154个链接,但我没有看到例如html文件内容中的链接:

&#34; http://www.niederschlagsradar.de/images.aspx?jaar=-6&type=europa.cld&datum=201311151500&cultuur=en-GB&continent=europa&#34;&#34; http://www.niederschlagsradar.de/images.aspx?jaar=-6&type=europa.cld&datum=201311151800&cultuur=en-GB&continent=europa&#34;

有许多链接有61-62个链接,我在列表测试中看不到这个链接。

其次,这个链接介于:

之间

var images = new Array(

最后

);

所以第一步我想从html文件中获取所有http链接。 其次我想过滤并获取html文件中所有的http链接:var images = new Array(和 );

1 个答案:

答案 0 :(得分:0)

希望这对您有用。此代码仅适用于 var images = new Array()

中的链接
            List<string> test = new List<string>();
            string extractUrls = YourHtmlInText;
            extractUrls = extractUrls.Remove(0, extractUrls.IndexOf("var images = new Array(") + " var images = new Array(".Length);
            extractUrls = extractUrls.Substring(0, extractUrls.IndexOf(";")).Replace(")", "").Trim();
            string[] urls = extractUrls.Split(',');
            foreach (String url in urls)
            {
                test.Add(url.Trim().Replace("\"",""));
            }