0

重複の可能性:
Web ページからのリンクを解析するための正規表現?

正規表現を使用して HTML からすべての URL を見つけるにはどうすればよいですか。ページの URL のみが必要なため、「.css」、「.jpg」、「.js」などで終わる URL の除外を追加したいと考えています。

HTML の例:

<a href=index.php?option=content&amp;task=view&amp;id=2&amp;Itemid=25 class="menu_selected" id="">Home</a>

また

<a href="http://data.stackexchange.com">data</a> |
                <a href="http://shop.stackexchange.com/">shop</a> |
                <a href="http://stackexchange.com/legal">legal</a> |

ありがとう

4

1 に答える 1

2

可能であれば、正規表現の使用を避け、代わりに適切な HTML パーサーを使用してください。たとえば、HTML Agility Packを参照し、次を使用します。

var doc = new HtmlDocument();
doc.LoadHtml(yourHtmlInput);
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]")
                              ?? Enumerable.Empty<HtmlNode>())
{
    string href = link.Attributes["href"].Value;
    if (!String.IsNullOrEmpty(href))
    {
        // Act on the link here, including ignoring it if it's a .jpg etc.
    }
}
于 2012-06-21T14:50:25.007 に答える