我正在使用HtmlAgilityPack从网址内容中获取标题,说明和图片。除了获取图像外,一切正常。有时图像网址只返回空白图像。我创建了一个测试方法,以确定图像是否存在:
var request = (HttpWebRequest)WebRequest.Create(imageUrl);
request.Credentials = CredentialCache.DefaultCredentials;
request.Method = "HEAD";
var response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
//do something
但有时我只是得到一张空白图片。答案很好,我得到了正确HttpStatusCode
和ContentType="image/png"
或ContentType="image/jpg"
。当我通过网络浏览器导航到该图像网址时,我也是一样的。我正在考虑获得最小长度的图像,但这是个坏主意。有人知道如何排除"这样的空白图片?
答案 0 :(得分:0)
首先,检查您是否使用了正确的方法,因为 HEAD 只是获取标题而没有实际内容。您应该使用 GET 。
此外,您说有时使用浏览器会获得相同的空白图像,如果是这样,您正在解析并获取图像的网站可能会阻止其网站中图像的热链接。
防止热链接是通过检查图像的 Referer (包含图像的网站)来完成的,当您将图像URL放在导航器中时它是空的。
您可以在下载图像时向网站发送正确的 Referer ,然后您可能会获得正确的图像,如下所示:
var request = (HttpWebRequest)WebRequest.Create(imageUrl);
request.Credentials = CredentialCache.DefaultCredentials;
request.Method = "GET";
request.Referer = urlOfThePageYouJustParsed;
var response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
//do something