C# HTML屏幕抓取-并非所有元素都在HttpWebResponse中

C# HTML屏幕抓取-并非所有元素都在HttpWebResponse中,c#,screen-scraping,C#,Screen Scraping,我目前正在尝试使用以下代码进行屏幕刮取: HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); HttpWebResponse theResponse = (HttpWebResponse) request.GetResponse(); using (StreamReader reader = new StreamReader(theResponse.GetResponseStream(), Encoding.U

我目前正在尝试使用以下代码进行屏幕刮取:

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
HttpWebResponse theResponse = (HttpWebResponse) request.GetResponse();
using (StreamReader reader = new StreamReader(theResponse.GetResponseStream(), Encoding.UTF8))
{
    string s = reader.ReadToEnd();
}
但是,我关心的数据(HTML表)不是结果的一部分。当我右键单击页面和ViewSource时,我也看不到我关心的HTML表——但是当我使用Firebug检查它时,我确实在DOM中看到了它

它似乎也不是通过ajax加载的

那么-是否有另一种方法,使用C#来获取DOM,因为它存在于Developer Tool视图中,而不是ViewSource结果中

不幸的是,这个页面不是公开的,所以我不能粘贴URL

它似乎也不是通过ajax加载的

为了向DOM动态添加数据,不需要使用AJAX。您可以很好地使用标准javascript

要刮取这样的页面,您需要一个处理javascript的刮取器。WinForms中的控件就是这样做的。它允许您加载网页并浏览DOM,就像在FireBug中一样(除了快照来自IE,因为WebBrowser只是IE的包装器)


但是由于WebBrowser控件不是为多线程环境(如web应用程序)设计的,因此您必须使用第三方库来完成该抓取任务。

您是否使用Fiddler或Ethereal来查看后台连接的URL?如果在后台调用的某个URL的响应中找到HTML表,则可以从该URL中提取数据。您想解析哪个URL/表?

谢谢Darin。当时我只能看到与HttpWebRequest相同的HTML源代码,但我不得不暂时放弃它。我会更深入地研究它,如果我能让它发挥作用,我会接受答案。再次感谢你的帮助!