如何从长内容中解析特定文本?

时间:2014-07-02 21:38:09

标签: c# .net

内容是一个长文本。 在某些地方的某个地方有这样的文字:

<img src="http://rotter.net/forum/Images/locked_icon_general.gif" border=

public static void FilterLockedThreads(string contents)
        {
            //string middle = \"http://rotter.net/forum/Images/locked_icon_general.gif\"";
            string firstTag = "<img src=";
            string lastTag = "border=\"";
            int f = 0;
            int startPos = 0;
            while (true)
            {

                f = contents.IndexOf(firstTag, startPos);
                if (f == -1)
                {
                    break;
                }
                int g = contents.IndexOf(lastTag, f);
                startPos = g + lastTag.Length;
                string responser = contents.Substring(f + firstTag.Length, g - f - firstTag.Length);
                lockedThreads.Add(responser);
            }
        }

我想要的是List

http://rotter.net/forum/Images/locked_icon_general.gif

在这种情况下,内容中有3个位置,因此lockedThreads应包含3个索引,每个索引包含字符串:http://rotter.net/forum/Images/locked_icon_general.gif

问题代码现在的方式是获取3个索引,但每个索引包含一个垂直的长文本/字符串,而不仅仅是:http://rotter.net/forum/Images/locked_icon_general.gif

现在的代码有什么问题?试图使用断点,但没有找到。

1 个答案:

答案 0 :(得分:1)

使用HtmlAgilityPack

HtmlAgilityPack.HtmlWeb web = new HtmlAgilityPack.HtmlWeb();
var doc = web.Load(your url);
var imgUrls = doc.DocumentNode.SelectNodes("//img[@border and @src]")
                    .Select(i => i.Attributes["src"].Value)
                    .ToList();