首页 新闻 会员 周边 捐助

C#如何获取加载js动态生成的代码后的完整网页代码

0
悬赏园豆:50 [已解决问题] 解决于 2015-12-30 14:56

  我的系统是b/s,想实现从别的网站页面上抓取完整的网页代码,该网页代码有部分是由js动态生成的,后台用HttpWebRequest、WebClient之类的是获取不到的,因为是b/s的,所以没法用WebBrower控件。

  我另外尝试过一下两种方式:

  1. 用代码实现网页另存为:将网页另存为,打开保存在本地的网页,查看源代码,这时候的是加载完全的,但是还是会回到如何实现网页另存为的功能。失败。

  2. 用目标网页的对应动态生成代码的js请求链接去获取:因为我要的是目标网页的特定内容,所以就想是否能找到生成这部分内容的js代码及其请求路径。从浏览器开发者工具中,我也找到了这个请求路径,但是单独访问没有返回任何响应结果。失败。

  从网上大家反馈的经验来说,目标实现的可能性比较小,但是还是想请教大家是否有方法能实现?谢谢

weegoood的主页 weegoood | 初学一级 | 园豆:5
提问于:2015-11-26 15:16
< >
分享
最佳答案
0
收获园豆:10
邀月 | 高人七级 |园豆:25475 | 2015-11-26 18:40
其他回答(2)
0

b/s也可以用WebBrowser

收获园豆:30
jello chen | 园豆:7336 (大侠五级) | 2015-11-26 15:38

请教一下如何使用呢?工具栏中根本就没有这个控件

支持(0) 反对(0) weegoood | 园豆:5 (初学一级) | 2015-11-26 15:56

@weegoood: 引用System.Windows.Form.dll,在codebehind中new

支持(0) 反对(0) jello chen | 园豆:7336 (大侠五级) | 2015-11-26 16:00

@jello chen: 这种方式我用过,但是会报 

当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“8856f961-340a-11d0-a96b-00c04fd705a2”。  这个错误,请问您知道怎么解决不?

支持(0) 反对(0) weegoood | 园豆:5 (初学一级) | 2015-11-26 19:07

@jello chen: 你好,线程的问题我已经解决,但是在使用WebBowser的时候,Document为null,这是为什么呢,能大概讲讲WebBowser获取完全源代码的做法吗?

支持(0) 反对(0) weegoood | 园豆:5 (初学一级) | 2015-11-27 14:06

@weegoood: browser.Document.Body.OuterHtml

支持(0) 反对(0) CoderLan | 园豆:200 (初学一级) | 2019-10-24 09:18
0

jello chen 的方案建议用Webkit内核的浏览器,兼容性更好

可以把C#方法注入到window.extend中,再调用,应该就可以了

收获园豆:5
路西恩 | 园豆:371 (菜鸟二级) | 2015-12-15 00:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册