- 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://www.codesnippet.cn/detail/0709201513622.html
来源: http://www.codesnippet.cn/detail/0709201513622.html