2012-11-21 146 views
3

我正在拆卸This Website。 下面的XPath表達式做工精細用FirePath Firebug擴展HTML敏捷包2

html/body/table/tbody/tr[3]/td 

但使用相同的XPath表達式下面的代碼給我空:

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); 
HtmlWeb web = new HtmlWeb(); 

doc = web.Load("http://www.edb.gov.hk/templates/sch_list_print.asp?district=cw"); 
var collection= doc.DocumentNode.SelectNodes("html/body/table/tbody/tr[3]/td"); 

任何人都可以幫助我在此。謝謝。

回答

3

這是有效的,看着你正在試圖抓取的頁面的源頭裏面沒有tbody。

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); 
HtmlWeb web = new HtmlWeb(); 

doc = web.Load("http://www.edb.gov.hk/templates/sch_list_print.asp?district=cw"); 
var collection= doc.DocumentNode.SelectNodes("html/body/table/tr[3]/td"); 

改變您的XPath來

html/body/table/tr[3]/td 
+0

哦,太棒了,我用的是被firepath產生的XPath,確實有在HTML中沒有TBODY,任何想法? – Burfi

+0

當DOM被加載時,它自動「固定」,並且有表缺少tbody。在加載頁面之後和加載頁面時,DOM會發生很多事情,您總是需要查看原始來源以查看實際存在的內容。 記得標記答案是正確的答案,如果它解決了你的問題:) –

+0

我不得不說你是最好的,謝謝。 – Burfi