WebBrowser控件 - Document.Body.InnerText问题

时间:2009-12-17 23:25:48

标签: c# file browser io innertext

有人可以帮我修改我的代码吗?我看不出我哪里错了。它只是没有做它应该做的事情。

它应该逐行读取一个文件(每行包含1个url),然后在字符串中的foreach url将访问该url并提取title,url和body文本,然后将其保存到文件中但是它只是没有做任何事情。我得到的唯一错误是: “对象引用未设置为对象的实例”,它指向以下代码行:

u = w.Document.Body.InnerText;

这是完整的代码:

    OpenFileDialog of =
        new OpenFileDialog();
    of.Title =
        "app name - Select File";
    using (of)
    {
        try
        {
            Cursor = Cursors.WaitCursor;
            if (of.ShowDialog() == DialogResult.OK)
            {
                string[] file =
                    File.ReadAllLines(
                    of.FileName);


                foreach (string line in file)
                {
                    w.Navigate(line);
                    string t,
                        d,
                        u,
                        path =
                        @"file.txt";

                        t =
                            w.DocumentTitle;
                        u =
                            w.Document.Body.InnerText;
                        d =
                            w.Url.AbsolutePath;
                        t =
                            t.Substring(0,
                            250);
                        t =
                            t.Replace(
                            "\"",
                            "\\\"");

                        a.Text += "\n" +
                            u;

                        File.AppendAllText(path,
                            "s[" +
                            an +
                            "] = \"" +
                            t +
                            "^" +
                            u +
                            "^" +
                            url1 +
                            u +
                            url2 +
                            d +
                            "\";" +
                            Environment.NewLine);
                        an++;
                }
            }
            Cursor = Cursors.Default;
        }
        catch (Exception exception)
        {
            MessageBox.Show(exception.Message);
        }
    }

我很感激任何建议/帮助,谢谢:)

jase

1 个答案:

答案 0 :(得分:1)

WebBrowser.Navigate是,IIRC,异步。在这里使用WebClient.DownloadString可能会更好吗?或HTML Agility Pack / Load