private String getFullUrl(string url)
{
try
{
if (url == null) return url;
if (processPattern(url)) return null; // 過濾不想下載
if (url.ToLower().StartsWith("https://") || url.ToLower().StartsWith("https://"))
return url;
Uri parentUri = new Uri(parentUrl);
string port = parentUri.IsDefaultPort ? "" : ":" + parentUri.Port;
if (url.StartsWith("/")) // 根相對路徑
return parentUri.Scheme + "://" + parentUri.Host + port + url;
else // 相對路徑
{
string s = parentUri.LocalPath.Substring(0, parentUri.LocalPath.LastIndexOf("/"));
return parentUri.Scheme + "://" + parentUri.Host + port + s + "/" + url;
}
}
catch (Exception e) { throw e; }
}
private bool processPattern(string url)
{
foreach (string p in patterns)
{
if (Regex.IsMatch(url, p, RegexOptions.IgnoreCase | RegexOptions.ExplicitCapture)
&& !p.Equals(""))
return true;
}
return false;
}
ParseResource 先將 HTML 下載到執行緒專屬目錄,再用 FileStream 讀取分析。其他實作請參考原始碼。