黑马程序员技术交流社区
标题:
使用WebBrowser从HTML中提取AJAX异步数据
[打印本页]
作者:
aisini
时间:
2014-8-21 15:05
标题:
使用WebBrowser从HTML中提取AJAX异步数据
using System;
using System.Windows.Forms;
namespace YingFeng.TraderHandle
{
public class AsynWebRequest
{
public Uri URL { get; set; }
private WebBrowser browser;
public AsynWebRequest(string url)
{
this.URL = new Uri(url);
}
public void Navigate()
{
if (this.URL == null)
throw new Exception("URL cannot be empty");
this.browser = new WebBrowser();
this.browser.ScriptErrorsSuppressed = true;
this.browser.DocumentCompleted += (s, e) =>
{
if (e.Url.Equals(this.browser.Url))
{
RequestCompletedEventArgs arg = new RequestCompletedEventArgs
{
Document = this.browser.Document
};
RequestCompleted(s, arg);
}
};
this.browser.Url = this.URL;
}
/// <summary>
/// 获取具有指定标识符的节点内容
/// </summary>
/// <param name="identifier">元素的id或name属性</param>
/// <returns></returns>
public string this[string identifier]
{
get
{
if (this.RequestCompleted == null)
{
throw new Exception("The document has not been completely loaded");
}
return this.browser.Document.GetElementById(identifier).InnerText;
}
}
public delegate void RequestCompletedEventHandler(object sender, RequestCompletedEventArgs e);
public event RequestCompletedEventHandler RequestCompleted;
public class RequestCompletedEventArgs
{
public HtmlDocument Document { get; set; }
}
}
}
调用示例:
var awr = new AsynWebRequest("http://stockhtm.finance.qq.com/sstock/ggcx/300101.shtml");
awr.RequestCompleted += (s,a) => {
MessageBox.Show(a.Document.GetElementById("main-4").InnerText);
MessageBox.Show(awr["main-4"]);
};
awr.Navigate();
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2