webbrowser 检测ajax,控制台获取网页AJAX的返回数据,用的WebBroWser

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

至于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();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值