We can't tell you why - because we don't have access to your data, and can't run your program under the same conditions you do as a result.
But you can look at it yourself, and find out.
Use the debugger.
First, to make it easier for you, break out that line:
var tdsA = doc.DocumentNode.Descendants("table");
var tdsB = (from td in tdsA
select td).ToList();
var tdsC = tdsB[2];
var tdsD = tdsC.ChildNodes;
var tdsE = tdsD[2];
var tds = tdsE;
Then put a break point on the first line, and run your app.
When it hits the breakpoint, hover the mouse over "doc" and make sure it's valid. If so, check the properties and make sure they aren't null either.
Step over the line, and look at tdsA = is it ok?
Keep going until you spot exactly which part is null.
Then you can start looking at why - but until you know that, you can't do anything.