使用XPath从其他站点检索数据

时间:2014-10-30 18:22:21

标签: c# .net xpath

我试图在Xpath的帮助下使用HTML Agilitypack从其他站点检索数据。我已经成功地从一个站点添加了数据,但是当我更改URL和XPath以从另一个站点检索数据时,它不起作用。

这是我的工作代码:

string Url = "http://www.uok.edu.pk/faculties/computerscience/bs.php";
HtmlAgilityPack.HtmlWeb web = new HtmlWeb();    
HtmlAgilityPack.HtmlDocument doc = web.Load(Url);    
var headers = doc.DocumentNode.SelectNodes(
"//*[@id=\"courses_sec\"]/div[2] /div[2]/div[2]/table[2]/tbody/tr[1]/td");

但是我改变了XPath和URL,变量headers为空。这是不起作用的代码:

string Url = "http://music.dodear.com/index.php";    
HtmlAgilityPack.HtmlWeb web = new HtmlWeb();    
HtmlAgilityPack.HtmlDocument doc = web.Load(Url);    
var headers = doc.DocumentNode.SelectNodes(
"//*[@id=\"content\"]/div[2]/table/tbody/tr[2]/td/table/tbody/tr/td/
table[1]/tbody/tr/td");    

1 个答案:

答案 0 :(得分:0)

XPath是错误的,或者HTML有某种不良格式(标签不能关闭等),这可能需要一些复杂的XPath才能访问。为什么不逐个分解XPath?例如,一旦你将web.Load(Url)加载到HtmlDocument,就可以进行观察

doc.DocumentNode.SelectSingleNode("//*[@id=\"content\"]").InnerHtml;

然后

doc.DocumentNode.SelectSingleNode("//*[@id=\"content\"]/div[2]").InnerHtml;  

然后

doc.DocumentNode.SelectSingleNode("//[@id=\"content\"]/div[2]/table").InnerHtml; 

所以你可以弄清楚问题是什么