【发布时间】:2020-01-17 13:18:24
【问题描述】:
我正在尝试从以下网站查找第二个表格““Team and Opponent Stats”。
https://www.basketball-reference.com/teams/BOS/2017.html
但我的代码只显示第一个表。我尝试过各种 XPath 组合,例如 "//table[@id='DataTables_Table_0']/tr/td" ,但似乎没有任何效果。
这是我的代码:
var url = "https://www.basketball-reference.com/teams/BOS/2017.html";
var web = new HtmlWeb();
var doc = web.Load(url);
var table1 = doc.DocumentNode
.Descendants("tr")
.Select(n => n.Elements("td").Select(p => p.InnerText).ToArray());
foreach (string[] s in table1)
{
foreach (string str in s)
{
Console.WriteLine(str.ToString());
}
//Console.WriteLine(s);
}
foreach (var cell in doc.DocumentNode.SelectNodes("//table[@id='DataTables_Table_0']/tr/td"))
{
Console.WriteLine(cell.InnerText);
}
这是我修改后的代码:
foreach (HtmlNode tr in doc.DocumentNode.SelectNodes("//table[@id=\"team_and_opponent\"]//tbody"))
{
//looping on each row, get col1 and col2 of each row
HtmlNodeCollection tds = tr.SelectNodes("td");
for (int i = 0; i < tds.Count; i++)
{
Console.WriteLine(tds[i].InnerText);
}
}
这是我要抓取的网站部分的 html 代码。
<div class="table_outer_container">
<div class="overthrow table_container" id="div_team_and_opponent">
<table class="suppress_all stats_table" id="team_and_opponent" data-cols-to-freeze="1"><caption>Team and Opponent Stats Table</caption>
<colgroup><col><col><col><col><col><col><col><col><col><col><col><col><col><col><col><col><col><col><col><col><col><col><col><col></colgroup>
<thead>
<tr>
<th aria-label=" " data-stat="player" scope="col" class=" poptip sort_default_asc center"> </th>
<th aria-label="Games" data-stat="g" scope="col" class=" poptip sort_default_asc center" data-tip="Games">G</th>
这是我用来获取正确表的最新 Agility Pack 代码。
foreach (HtmlNode table in doc.DocumentNode.SelectNodes("//*[@id=\"team_and_opponent\"]"))
{
string tempStr = table.InnerText;
foreach (HtmlNode nodecol in table.SelectNodes("//tr")) ///html/body/div[1]/div[2]/div[2]/div/div/div[3]/table[2]/tbody[2]
{
foreach (HtmlNode cell in nodecol.SelectNodes("th|td"))
{
Console.WriteLine("cell: " + cell.InnerHtml.ToString());
我仍然收到 NullReference 错误消息。
【问题讨论】:
-
如果我在页面上进行“查看源代码”(注意这与使用开发工具进行检查有很大不同),数据似乎在备注中。不知道是正常的还是故意的(防刮?),但是HAP不会得到备注中的任何节点。
标签: c# xpath html-agility-pack