错误使用Watin抓取到Google下一页

时间:2013-07-06 09:47:10

标签: c# watin

我想使用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转换为字符串时有一些错误???

2 个答案:

答案 0 :(得分:0)

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

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

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

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

page[i] = i.ToString();

目前您正在获取异常,因为Find.ByText可能会返回null,因为它找不到链接。

另一方面,我必须说 - 如果您是以编程方式抓取Google,请先检查terms of service吗?

答案 1 :(得分:0)

在线 string [] page = null; 您将页面变量设置为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然后在调用之前设置每个数组的值调整大小。 aslo i cahnged另一条线,我认为它会产生错误。