图像提取:uri太长
问题描述:
我正在从网页上的图像提取软件工作。已经创建了一个功能图像提取:uri太长
public static void GetAllImages()
{
WebClient x = new WebClient();
string source = x.DownloadString(@"http://www.bbc.com");
var document = new HtmlWeb().Load(source);
var urls = document.DocumentNode.Descendants("img")
.Select(e => e.GetAttributeValue("src", null))
.Where(s => !String.IsNullOrEmpty(s));
document.Load(source);
}
它说:“URI过长” ..
我试图用Uri.EscapeDataString。但没有得到知道在哪里把它
任何帮助,将赞赏
答
HtmlWeb.Load
需要一个URL作为其来源和处理内容的下载。你不需要补充WebClient
来做到这一点,这一切都照顾。
你正在做的是下载内容,然后尝试使用下载的内容(HTML)作为URL(可能在Load
意味着Parse
的假设下)。
所以删除
WebClient x = new WebClient();
string source = x.DownloadString(@"http://www.bbc.com");
然后下一行更改为
var document = new HtmlWeb().Load(@"http://www.bbc.com");
,你会好到哪里去。
答
如果你在WebClient.DowloadString(url)中看到,你会发现在解析你的url的过程中,它调用了system.io.path.getfullpath,它产生了260个字符的异常。
参考:http://msdn.microsoft.com/en-us/library/system.io.path.getfullpath.aspx
凡/时,它说,乌里太长? – Richard
on var document = new HtmlWeb()。Load(source); –
我敢打赌,HtmlWeb.Load将Uri作为其参数,同时为您提供整个页面内容。 也请为您的问题添加HtmlWeb类的描述。你可能正在使用一些第三方库。 –