【发布时间】:2011-09-19 11:51:02
【问题描述】:
我想抓取一个 Wiki 页面。具体来说,this one.
我的应用程序将允许用户输入车辆的注册号(例如,SBS8988Z),它会显示相关信息(在页面上)。
例如,如果用户在我的应用程序的文本字段中输入 SBS8988Z,它应该在该 wiki 页面上查找该行
SBS8988Z (SLBP 192/194*) - F&N NutriSoy Fresh Milk: Singapore's No. 1 Soya Milk! (2nd Gen)
并返回 SBS8988Z (SLBP 192/194*) - F&N NutriSoy 鲜奶:新加坡排名第一的豆浆! (第二代)。
到目前为止,我的代码是(从各个网站复制和编辑的)...
WebClient getdeployment = new WebClient();
string url = "http://sgwiki.com/wiki/Scania_K230UB_(Batch_1_Euro_V)";
getdeployment.Headers["User-Agent"] = "NextBusApp/GetBusData UserAgent";
string sgwikiresult = getdeployment.DownloadString(url); // <<< EXCEPTION
MessageBox.Show(sgwikiresult); //for debugging only!
HtmlAgilityPack.HtmlDocument sgwikihtml = new HtmlAgilityPack.HtmlDocument();
sgwikihtml.Load(new StreamReader(sgwikiresult));
HtmlNode root = sgwikihtml.DocumentNode;
List<string> anchorTags = new List<string>();
foreach(HtmlNode deployment in root.SelectNodes("SBS8988Z"))
{
string att = deployment.OuterHtml;
anchorTags.Add(att);
}
但是,我收到了一个 ArgumentException 未处理 - 路径中有非法字符。
代码有什么问题?有没有更简单的方法来做到这一点?我正在使用 HtmlAgilityPack,但如果有更好的解决方案,我很乐意遵守。
【问题讨论】:
-
是的,我见过他们。其中一个站点是我从中获得此 sn-p 代码的地方!当然,我编辑了它,但它不起作用:(
标签: c# screen-scraping screen html-agility-pack