C#中的HtmlAgilityPack显示“System.dll中出现类型'System.UriFormatException'的第一次机会异常”

时间:2012-02-26 18:32:26

标签: c# html-agility-pack

我已使用wget下载了以下页面并将其保存在f.html

http://www.ebay.com/sch/i.html?_nkw=gruen&_in_kw=1&_ex_kw=sara+quartz+embassy+bob+robert+elephants+adidas&_sacat=See-All-Categories&_okw=gruen&_oexkw=sara+quartz+embassy+bob+robert+elephants+adidas&_adv=1&_udlo=&_udhi=&_LH_Time=1&_ftrt=903&_ftrv=24&_sabdlo=&_sabdhi=&_samilow=&_samihi=&_sadis=200&_fpos=Zip+code&_fsct=&LH_SALE_CURRENCY=0&_sop=12&_dmd=1&_ipg=50

现在我想在C#中使用HtmlAgilityPack加载此页面进行解析。使用此代码段

var webGet = new HtmlWeb();
var document = webGet.Load("f.html");

第二行抛出此错误

A first chance exception of type 'System.UriFormatException' occurred in System.dll

解决方案是什么?

2 个答案:

答案 0 :(得分:2)

我手头没有编译器,但我认为"f.html"不是一个结构良好的Uri。它缺乏架构和域。

正确的uri应该像"http://the.domain.name/f.html"

答案 1 :(得分:0)

尝试以下方法:

var url = "http://www.ebay.com/sch/i.html?_nkw=gruen&_in_kw=1&_ex_kw=sara+quartz+embassy+bob+robert+elephants+adidas&_sacat=See-All-Categories&_okw=gruen&_oexkw=sara+quartz+embassy+bob+robert+elephants+adidas&_adv=1&_udlo=&_udhi=&_LH_Time=1&_ftrt=903&_ftrv=24&_sabdlo=&_sabdhi=&_samilow=&_samihi=&_sadis=200&_fpos=Zip+code&_fsct=&LH_SALE_CURRENCY=0&_sop=12&_dmd=1&_ipg=50";
var document = new HtmlDocument();
document.LoadHtml(new WebClient().DownloadString(url));

如果要从本地文件加载它,请尝试:

var file = "f.html";
var document = new HtmlDocument();
document.LoadHtml(File.ReadAllText(file));