使用C#从网页获取链接

3

我将尝试爬取网页上的文章链接。

这是我的代码:

static void Main(string[] args)
{
    WebClient web = new WebClient();
    string html = web.DownloadString("http://www.dailymirror.lk");
    MatchCollection m1 = Regex.Matches(html, @"<a href=""(.+?)""/s*class=""panel-heading"">",RegexOptions.Singleline);

    foreach(Match m in m1)
    {
        Console.WriteLine(m.Groups[1].Value);
    }
}

我所关注的页面HTML标记如下:

我正在专注于页面中的这个HTML标记:

<a href="http://www.dailymirror.lk/99833/ravi-s-budget-blues" class="panel-heading">

然而,我的代码无法检索链接,有什么办法可以改进我的代码吗?

2
通常使用正则表达式来爬取HTML是一个不好的想法。应该使用适当的库,比如HtmlAgilityPack - Equalsk
正则表达式匹配开放标签(除了XHTML自包含标签):https://dev59.com/X3I-5IYBdhLWcg3wq6do - Ian P
1
@IanP -- 有人要贴那个链接。我认为这是必须的。;) - David Tansey
1个回答

4

如前面的评论所述,使用正则表达式解析HTML通常是不好的想法。

一种方法是使用HTML Agility Pack:

https://htmlagilitypack.codeplex.com/

HtmlWeb hw = new HtmlWeb();
HtmlDocument doc = hw.Load("http://www.mywebsite.com");
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href]"))
{
    // do something with link here
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接