使用C#4.0和htmlagilitypack如何讀取某些表內的值。我的意思是讓我們說有10個表,我想從6日讀取值或我有表ID。HtmlAgilityPack - 如何閱讀某些表 - C#4.0
或者讓我說我想讀取特定td後的td值。
或表格在某些div或元素或文本後面出現。這些可能嗎?
使用C#4.0和htmlagilitypack如何讀取某些表內的值。我的意思是讓我們說有10個表,我想從6日讀取值或我有表ID。HtmlAgilityPack - 如何閱讀某些表 - C#4.0
或者讓我說我想讀取特定td後的td值。
或表格在某些div或元素或文本後面出現。這些可能嗎?
你所問的一切都可以相對容易地完成。它的文檔可能缺乏並不重要,它應該類似於XML和網絡的使用和功能實現。
如何讀取某些表內的值?假設有10個表格,我想從第6個值讀取值,或者我有表格ID。
尋找第六表:
// XPath
var table6 = doc.DocumentNode.SelectSingleNode("//table[6]");
// LINQ
var table6 = doc.DocumentNode.Descendants("table").Skip(5).FirstOrDefault();
通過ID查找表/元素:
var myTable = doc.GetElementById("myTable");
// XPath
var myTable = doc.DocumentNode.SelectSingleNode("//table[@id='myTable']");
var myTable = doc.DocumentNode.SelectSingleNode("//*[@id='myTable']");
// LINQ
var myTable = doc.DocumentNode
.Descendants("table")
.Where(table => table.Attributes.Contains("id"))
.SingleOrDefault(table => table.Attributes["id"].Value == "myTable");
var myTable = doc.DocumentNode
.Descendants()
.Where(e => e.Attributes.Contains("id"))
.SingleOrDefault(e => e.Attributes["id"].Value == "myTable");
var myTable = doc.DocumentNode
.Descendants("table")
.SingleOrDefault(table => table.GetAttributeValue("id", null) == "myTable");
var myTable = doc.DocumentNode
.Descendants()
.SingleOrDefault(e => e.GetAttributeValue("id", null) == "myTable");
比方說,我想讀某TD後未來TD值。
// XPath
var certainTd = table6.SelectSingleNode("//td[2]");
var tdAfterCertainTd = certainTd.SelectSingleNode("following-sibling::td[1]");
// LINQ (not so easy)
var certainTd = table6.Descendants("td").Skip(1).FirstOrDefault();
var tdAfterCertainTd = certainTd.NextSibling;
while (tdAfterCertainTd != null)
{
if (tdAfterCertainTd.Name == "td")
break;
tdAfterCertainTd = tdAfterCertainTd.NextSibling;
}
表某些格或元素或文本之後到來。
// XPath
var certainDiv = doc.DocumentNode.SelectSingleNode("//div[1]");
var tableAfterCertainDiv = certainDiv.SelectSingleNode("following-sibling::table[1]");
// LINQ (not so easy)
var certainDiv = doc.DocumentNode.Descendants("div").FirstOrDefault();
var tableAfterCertainDiv = certainDiv.NextSibling;
while (tableAfterCertainDiv != null)
{
if (tableAfterCertainDiv.Name == "table")
break;
tableAfterCertainDiv = tableAfterCertainDiv.NextSibling;
}
你應該注意到的一些模式。
謝謝偉大的答案。有什麼地方我可以學習xpath。任何好的教程電子書或視頻。謝謝。 – MonsterMMORPG
我不知道任何教程網站。我只是建議找到一個列出運算符,函數和語法的程序,並嘗試編寫程序來處理一些數據。並做很多。 –
你在說什麼?顯示標記。解釋你需要獲取什麼。 –
你有什麼嘗試?一個體面的首發是在這裏:http://www.4guysfromrolla.com/articles/011211-1.aspx我讀過,嘗試你提到的事情,如果你不能得到它,回來更具體的情況。 –
感謝您的鏈接。例如,頁面中可能有很多表格。可以說我想要獲得某個關鍵字或div元素後的表格。我怎樣才能做到這一點 ?閱讀某些標記後的元素。 – MonsterMMORPG