C# 端口美化组至HtmlAgility

C# 端口美化组至HtmlAgility,c#,html-agility-pack,C#,Html Agility Pack,我正在尝试将此程序从python移植到C: 这是我在C中使用HtmlAgilityPack的[code fragment]尝试,但不起作用: HtmlWeb browser = new HtmlWeb(); string URI = "http://www.forexfactory.com/calendar.php?day=nov18.2016"; ServicePointManager.ServerCertificateValidationCallback += (sender, cert,

我正在尝试将此程序从python移植到C:

这是我在C中使用HtmlAgilityPack的[code fragment]尝试,但不起作用:

HtmlWeb browser = new HtmlWeb();
string URI = "http://www.forexfactory.com/calendar.php?day=nov18.2016";

ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

HtmlDocument document = browser.Load(URI);

foreach (HtmlNode row in document.DocumentNode.Descendants("table").FirstOrDefault(_ => _.Id.Equals("calendar__table")).Descendants("tr"))
    Console.WriteLine(row);

您可以使用此代码查询id为和的单个节点

document.DocumentNode.SelectSingleNode("//table[@id='calendar_table']").Descendants("tr");
但我想您需要按类而不是按id进行查询,因此代码如下所示

document.DocumentNode.SelectSingleNode("//table[@class='calendar_table']").Descendants("tr");

虽然python代码中的类名有两个__;符号,但在c代码中有一个-

python代码查找具有给定类属性的表元素,您的c代码似乎查找给定id _;.id.Equals。我不熟悉C HTML解析,但我会寻找一个等价的类。如果所讨论的HTML将多个类分配给同一个表,那么HTML Agility Pack不会尝试解决这个问题。因此,可能需要一些工作来拆分空格上的class属性并执行contains。谢谢,您在这两个方面都是正确的-need\。这很有效。
document.DocumentNode.SelectSingleNode("//table[@class='calendar_table']").Descendants("tr");