html的table中的tr都有data-coin属性,取得所有tr后,想用每个tr取得下级的td中带class='click left_l'的td,问题就在这一步,tr是对的,但是使用hn.SelectSingleNode("//td[@class='click left_l']");取得的 HtmlNode tdNode 永远是第一个tr里的那个td内容,是什么问题呢string testHtml = "<table id='tableAsset'><tr data-coin=''><td class='click left_l'>1</td></tr><tr data-coin=''><td class='click left_l'>2</td></tr><tr data-coin=''><td class='click left_l'>3</td></tr></table>";
StringBuilder infoStr = new StringBuilder();
//string html = webBrowser1.Document.GetElementById("tableAsset").OuterHtml;
string html = testHtml;
doc.LoadHtml(html);
HtmlNodeCollection trNodes = doc.DocumentNode.SelectNodes("//tr[@data-coin]");
if (trNodes != null && trNodes.Count > 0)
{
foreach (HtmlNode hn in trNodes)
{
HtmlNode tdNode = hn.SelectSingleNode("//td[@class='click left_l']");
if (tdNode != null)
{
infoStr.AppendFormat("{0} ",tdNode.InnerText);
}
infoStr.AppendLine();
}
label1.Text = infoStr.ToString();
}
StringBuilder infoStr = new StringBuilder();
//string html = webBrowser1.Document.GetElementById("tableAsset").OuterHtml;
string html = testHtml;
doc.LoadHtml(html);
HtmlNodeCollection trNodes = doc.DocumentNode.SelectNodes("//tr[@data-coin]");
if (trNodes != null && trNodes.Count > 0)
{
foreach (HtmlNode hn in trNodes)
{
HtmlNode tdNode = hn.SelectSingleNode("//td[@class='click left_l']");
if (tdNode != null)
{
infoStr.AppendFormat("{0} ",tdNode.InnerText);
}
infoStr.AppendLine();
}
label1.Text = infoStr.ToString();
}
"/html[1]/body[1]/center[1]/table[2]/tr[1]/td[1]/table[1]")类似这样的参数
{
WebRequest request = WebRequest.Create(@"http://bbs.csdn.net/topics/392317973"); WebResponse response = request.GetResponse(); Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream, Encoding.UTF8); string htmlContent = reader.ReadToEnd();
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(htmlContent); HtmlNode node = doc.DocumentNode.SelectSingleNode(@"/html[1]/body[1]/div[2]");
}你试试?