C# HtmlAgilityPack空白图像
我使用HtmlAgilityPack从url内容中获取标题、描述和图像。除了获取图像外,一切正常。有时图像URL只返回空白图像。我创建了一个测试方法,以确定图像是否存在:C# HtmlAgilityPack空白图像,c#,.net,html-agility-pack,C#,.net,Html Agility Pack,我使用HtmlAgilityPack从url内容中获取标题、描述和图像。除了获取图像外,一切正常。有时图像URL只返回空白图像。我创建了一个测试方法,以确定图像是否存在: var request = (HttpWebRequest)WebRequest.Create(imageUrl); request.Credentials = CredentialCache.DefaultCredentials; request.Method = "HEAD"; var response = (HttpWe
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”
。当我通过web浏览器导航到该图像url时,我也有同样的想法。我在考虑用最小长度拍摄图像,但这不是个好主意。有人知道如何“排除”此类空白图像吗?首先,检查您是否使用了正确的方法,因为HEAD只获取标题,而没有实际内容。您应该使用GET
另外,您说过有时使用浏览器会得到相同的空白图像,如果是这样的话,您正在解析和获取图像的站点可能会阻止其站点中图像的热链接
热链接阻止是通过检查图像的引用器(包含图像的站点)来完成的,当您将图像URL放入导航器时,它是空的
下载图像时,您可以向站点发送正确的参考信息,然后您可能会获得正确的图像,如下所示:
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
我尝试了您的解决方案,但不幸的是,它似乎不起作用。可能主机希望Cookie从发送到您首先请求的页面。请检查此响应,看看它现在是否有效。