C#解析网站数据出错,显示错误为“0”的值对于“index”无效。“index”应介于 0 和 -1 之间。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#解析网站数据出错,显示错误为“0”的值对于“index”无效。“index”应介于 0 和 -1 之间。相关的知识,希望对你有一定的参考价值。

我先获得了一个网站的源代码,获得的部分如下
<tr><td class="td1">
00:05 </td><td class="td2">子午书简</td></tr><tr><td class="td1">
00:15 </td><td class="td2">科技之光:科普生辉</td></tr><tr><td class="td1">
06:00 </td><td class="td2">子午书简</td></tr>
......(接下来的是一样的格式)
......
接下来的解析代码是这样的
WebBrowser webb = new WebBrowser();
webb.Navigate("about:blank");
htmlDocument htmldoc = webb.Document.OpenNew(true);
htmldoc.Write(strWeb);
HtmlElementCollection htmlTR1 = htmldoc.GetElementsByTagName("tr"); foreach(HtmlElement tr in htmlTR1)

string strID=tr.GetElementsByTagName("td")[0].InnerText;
string strName=tr.GetElementsByTagName("td")[1].InnerText;

现在的问题是strID解析不了,会出现前面所示的问题。哪位大侠赶紧帮我解决下啊

虽然时间过了很久了,但是今天正好碰到两样的问题,搜不到解决方法,最后终于自己对比研究出来,发现,注意使用这个string strID=tr.GetElementsByTagName("td")[0].InnerText;

的时候,网页的源代码的表格内部部分一定要完成,即必须是

<table><tr><td class="td1">………………
这样,即<tr>前面必须要有<table>标签,而且二者中间不能有其它标签,比如<table><tbody><tr>
这样多了一个<tbody>都是不行的。我自己测试了是成功可以取到单元格内的值,不再报错了。
参考技术A 帮忙。

C#不报错直接终止运行

没有了那个黄条显示错误了,直接推出了程序,这个截图是我用同学的做的,希望能得到解答,谢谢!
这只是一个例子,说明我的程序调试的时候没有了那个错误提示,不是问错在哪里了,谢谢大家的关注,期待强人帮我

参考技术A 1,2,3,4,5 只有5个数吧
对应为a[0],a[1],a[2],a[3],a[4].
所在当i=5时,当然会出错了

改成以下就不会出错了
for(int i=0; i<5; i++)

Console.Write(arr[i] + "\t");
参考技术B try

//可能错误的那些代码些在这个里面

catch()

//要终止什么东西的代码写在这里,如果不终止什么 这里可以不写,程序不会报错,会一直走下去
本回答被提问者和网友采纳
参考技术C 。。。设置断点 在你的代码前面的白条那双击两下就可以了
然后在选项 工具 调试运行
参考技术D 选项 工具 调试,看里面的选项设置正确不

以上是关于C#解析网站数据出错,显示错误为“0”的值对于“index”无效。“index”应介于 0 和 -1 之间。的主要内容,如果未能解决你的问题,请参考以下文章

使用c#将varchar转换为float时出错

C#不报错直接终止运行

C#在运行时出现以下错误:InvalidArgument="0"的值对于"index"无效.

尝试从 Swift 2.0 中的 json 解析数据时出错?

使用 C# 执行 SQLCommand 时出错

C# 将字节解析为结构顺序