public CrawlingOptions(string expression, string url) { if (string.IsNullOrWhiteSpace(expression)) { throw new ArgumentNullException(nameof(expression), "Expression cannot be empty."); } if (!Uri.TryCreate(url?.Trim(), UriKind.Absolute, out var parsedUri)) { throw new ArgumentException($"Could not parse invalid URL: {url}.", nameof(url)); } Expression = expression.Trim(); BaseUri = parsedUri; BaseUrlWithoutParameters = url.Split('?').First().Trim(); var domainUri = BaseUri.GetLeftPart(UriPartial.Authority); DomainUri = new Uri(domainUri, UriKind.Absolute); }