我用C#应用程序编写了抓取网站。 现在我有一个问题 我可以确定此网址指向文件或网页! 如何在不发送请求的URL的情况下解决此问题?
答案 0 :(得分:2)
您不能不发送请求...因为统一资源定位器无法与文件系统路径相比。例如,虽然以下网址以.jpg
结尾,但显然不是图片:
如果您决定改变主意,以下是这样的:
public bool IsFileContent(string url)
{
var request = HttpWebRequest.Create(url);
request.Method = "HEAD";
switch (request.GetResponse().ContentType)
{
case "image/jpeg": return true;
case "text/plain": return true;
case "text/html": return false;
default: // TODO: add more case as needed
throw new ArgumentOutOfRangeException();
}
}
答案 1 :(得分:1)
你要做的事几乎是不可能的。网址不会“导致文件或网页”。它们被路由到请求处理程序。请求处理程序可以返回HTML响应或文件下载或其他类型的响应。某些扩展名如“.html”或“.pdf”意味着响应的类型应该是什么。但是URL可能有一个不指示响应类型的扩展名,或者(在此页面上)根本没有扩展名。
您无法仅通过URL确定HTTP请求的响应类型。
答案 2 :(得分:-1)
在没有发送任何请求的情况下,我唯一能想到的就是检查url末尾的文件扩展名。这不会给您100%的成功率,因为您可以使用不以扩展名结尾的网址发送文件。这就是说通常的做法是让文件url以扩展名
结束文件名