【发布时间】:2020-02-22 20:10:32
【问题描述】:
如何从所有 href 中检索所有 url 我不想使用 HTML Agility Pack 或类似的 - 必须是干净的代码并且非常短。
HttpClient client = new HttpClient();
static async Task Main(string[] args)
{
Program program = new Program();
await program.GetTodoItems();
await program.Function();
Console.WriteLine("Hello Word!");
}
private async Task GetTodoItems()
{
string ResponseHtml = await client.GetStringAsync("https://example.com");
var LinkParser = new Regex(@"\b(?:https?://|www\.)\S+\b", RegexOptions.Compiled | RegexOptions.IgnoreCase);
foreach (Match m in LinkParser.Matches(ResponseHtml))
{
Console.WriteLine(m.Value);
}
}
我希望干净的网址不会翻倍,并且仅适用于网站而不适用于脚本。这段代码向我展示了一些带有额外标签和字符的链接:
【问题讨论】:
-
您说您要检索所有网址,但您的正则表达式仅匹配以 http: https: 和 www 开头的字符串。这并不涵盖您在 href 中可能遇到的所有 url
-
请不要通过破坏您的帖子为他人增加工作量。通过在 Stack Exchange (SE) 网络上发帖,您已根据 CC BY-SA license 授予 SE 分发内容的不可撤销权利(即无论您未来的选择如何)。根据 SE 政策,分发非破坏版本。因此,任何破坏行为都将被撤销。请参阅:How does deleting work? …。如果允许删除,则帖子下方左侧有一个“删除”按钮,但仅在浏览器中,而不是移动应用程序中。
-
锁定没有明确的持续时间,因为以前的锁定已过期。请不要和版主玩猫捉老鼠。
标签: c# regex foreach httpclient