该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
至于HttpRequest大家都知道,他不能获取网页的Ajax异步数据,代码如下:
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Collections;
using System.Threading;
namespace ConsoleApplication1
{
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;
}
/// /// 获取具有指定标识符的节点内容///
/// 元素的id或name属性
///
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; }
}
[STAThread]
static void Main(string[] args)
{
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();
}
}
}