-1

我想使用 Watin 爬到谷歌的下一页,但它有一些错误这是我的代码:

               string[] page = null;
                for (int i = 0; i < NumOfPage; i++)
                {
                    page[i] = ('"' + i + '"').ToString();
                }
               int count=1;
               while (count<NumOfPage)
                {
                     ie.Link(Find.ByText(page[count])).Click();                                                                                


                    }

                    count++;
                }

但它有一个错误* “对象引用未设置为对象的实例。” * 在行page[i] = ('"' + i + '"').ToString();我想知道将 int 转换为字符串时是否有一些错误???

4

2 回答 2

0

问题是您正在执行整数运算。我怀疑你想要:

page[i] = "\"" + i + "\"";

然后您将执行字符串连接,这肯定是您想要的。

编辑:如果您实际上不需要引号,那就更简单了:

page[i] = i.ToString();

目前您正在收到异常,因为Find.ByText它可能返回 null,因为它没有找到链接。

另一方面,我不得不说 - 如果您以编程方式抓取 Google,您是否首先检查了服务条款

于 2013-07-06T09:50:04.597 回答
0

在行 string[] page = null; 您将 page 变量设置为 null 并且应该对其进行初始化。你可以像这样改变你的代码

            string[] page = string[1];
            for (int i = 0; i < NumOfPage; i++)
            {
                Array.Resize<string> (ref page, i+1);
                page[i] = "\"" + i.ToString() + "\"";
            }
           int count=1;
           while (count<NumOfPage)
            {
                 ie.Link(Find.ByText(page[count])).Click();                                                                                


                }

                count++;
            }

我首先将页面数组设置为 1,然后在调用设置每个数组的值之前调整它的大小。我还换了另一条线,我认为它会产生错误。

于 2013-07-06T09:54:16.720 回答