C#查找字符串并解压缩href

时间:2014-08-22 06:16:31

标签: c# string web-services find

我有一个包含文本的文件。我需要搜索一个字符串并在该行上提取href。

file.txt是包含基本wordpress主页的文件

最后我想要http://example.com之类的链接。 我试过几种方法,比如

        DateTime dateTime = DateTime.UtcNow.Date;
        string stringpart = dateTime.ToString("-dd-M-yyyy");
        string finalword = "candy" + stringpart;
        List<List<string>> groups = new List<List<string>>();
        List<string> current = null;
        foreach (var line in File.ReadAllLines(@"E:/file.txt"))
        {
            if (line.Contains("-22-8-2014") && current == null)
                current = new List<string>();
            else if (line.Contains("candy") && current != null)
            {
                groups.Add(current);
                current = null;
            }
            if (current != null)
                current.Add(line);
        }

        foreach (object o in groups)
        {
            Console.WriteLine(o);
        }        
        Console.ReadLine();
    }

2 个答案:

答案 0 :(得分:1)

要正确执行此操作,您必须解析此html文件。使用CSqueryHTML Agility PackSgmlReader等内容。

使用CSQuery解决您的问题:

public IEnumerable<string> ExtractLinks(string htmlFile)
{
    var page = CQ.CreateFromFile(htmlFile);
    return page.Select("a[href]").Select(tag => tag.GetAttribute("href"));
}

答案 1 :(得分:0)

如果您决定使用HtmlAgilityPack,这应该很简单:

var doc = new HtmlDocument();
//load your HTML file to HtmlDocument
doc.Load("path_to_your_html.html");
//select all <a> tags containing href attribute
var links = doc.DocumentNode.SelectNodes("//a[@href]");
foreach(HtmlNode link in links)
{
    //print value of href attribute
    Console.WriteLine(link.GetAttributeValue("href", "");
}