如何在 C# 中从 StreamReader 获取文本


private void button1_Click(object sender, EventArgs e)
{
    string url = urlTextBox.Text;
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    StreamReader sr = new StreamReader(response.GetResponseStream());
    richTextBox1.Text = sr.ReadToEnd();
    webBrowser1.DocumentText = richTextBox1.Text;
    HtmlElement htmlElement = webBrowser1.Document.GetElementById("name");
    string data = htmlElement.InnerText;
    label1.Text = data;
    sr.Close();
}

我想读取 php 文件的 id 元素中的一些文本,但在这一行遇到了一些问题

string data = htmlElement.InnerText;

我从Visual Studio 2010得到一些警告

NullReferenceExpection 未处理
对象引用未设置为对象的实例。

谁能帮我?谢谢:)

我相信

这里的问题可能是WebBrowser控件异步加载文档。因此,当您尝试立即访问webBrowser1.Document时,就会出错。

MSDN 的DocumentText属性:

如果设置此属性的值,然后立即再次检索它,则检索的值可能与 WebBrowser 控件没有时间加载新内容时设置的值不同。可以在 DocumentDone 事件处理程序中检索新值。或者,可以通过循环中调用 Thread.Sleep 方法阻止线程,直到 DocumentText 属性返回最初设置的值。

另请参阅文档已完成事件。

该方法很可能找不到 ID 为"name"的元素,因此变量 htmlElement 为 null。检查您尝试抓取的网站是否具有具有该 ID 的元素。

相关内容

  • 没有找到相关文章

最新更新