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 的元素。