使用Html Agility Pack从网页中的表中获取值的完整值

时间:2013-12-30 02:45:05

标签: c# html c#-4.0

我正在尝试使用Html Agility Pack获取“Transaction and get url”的全部价值。当我使用谷歌检查HTML源时,我能够看到带有网址的完整交易ID。我的问题是如何获得所有交易的全部价值以及与之相关的网址。

这是网站的网址:http://explorer.litecoin.net/address/LeDGemnpqQjrK8v1s5HZKaDgjgDKQ2MYiK

带回日期的示例“TransactionBlockApprox.TimeAmountBalanceCurrency                                     5130f066e0 ... 4682752013-11-28 09:14:170.30.3LTC“

protected void Page_Load(string address)
    {
        string Url = address;
        HtmlWeb web = new HtmlWeb();
        HtmlDocument doc = web.Load(Url);

        string wallet = doc.DocumentNode.SelectNodes("/html/body/div/div/div/table")[0].InnerText[0].InnerText;
    }

1 个答案:

答案 0 :(得分:1)

有些时候你必须手动做事你不能直接获得完整的链接,因为使用javascript,为了得到它你必须操纵包含href的td元素的innerhtml并得到双重qutations之间的什么,及其总是更好地将数据表示为对象,例如

 public class data
    {
        public itemWithlink Transaction { get; set; }
        public itemWithlink Block { get; set; }
        public itemWithlink ApproxTime { get; set; }
        public itemWithlink Amount { get; set; }
        public itemWithlink Balance { get; set; }
        public itemWithlink Currency { get; set; }
    }

    public class itemWithlink
    {
        public string numberOrname { get; set; }
        public string link { get; set; }
    }

并生成一个包含链接值的表列表,只要找到它就可以设置

var list = htmlDoc.DocumentNode.SelectNodes("//table/tr").
           Skip(1).
           Select(tr => tr.Elements("td").
           Select(td => new itemWithlink() { 
           numberOrname = td.InnerText, link = td.InnerHtml.Contains("href") ?
           td.InnerHtml.Substring(td.InnerHtml.IndexOf("\""), td.InnerHtml.LastIndexOf("\""))
           .Replace("..",@"http://explorer.litecoin.net/") : null })
           .ToArray())
           .Select(row => new data() { Transaction = row[0], Block = row[1], ApproxTime = row[2], Amount = row[3],  Balance = row[4] , Currency = row[5]  }).ToList();