请教:怎么让webbrowser执行javascript代码并返回执行后的html

时间:2022-11-23 10:13:48
查找了不少网上资料,说是可以利用
webBrowser.Document.InvokeScript来执行script代码
然后用webBrowser.DocumentText来得到html源码

现在的问题是:
1.webBrowser.DocumentText的源码里面还是JavaScript的代码,而非执行后的
2.网页中的内容是用javascript生成的,若得不到执行后的代码就抓不到网上的页面

谢谢指教

8 个解决方案

#1


我也有这个问题。。帮顶啦。

#2


webBrowser1.Document.InvokeScript
执行页面上的脚本

#3


WebBrowser.InvokeScript 通过调用页面里面的函数
js 执行后的内容无需抓取

#4


引用 3 楼 wuyq11 的回复:
WebBrowser.InvokeScript 通过调用页面里面的函数
js 执行后的内容无需抓取


有的javascript代码如分页,只要执行就可以了
可是有的内容是调用script来执行出来的。。。

比如:

1.(已有<strong id="top_orgin_count"></strong>条评论)  怎么获取top_orgin_count的具体数字?
2.腾讯新闻评论中,评论内容是用:<div id='loading_orgin' style='color:#999; margin:30px 0 30px 250px;'>加载的。我要得到里面的具体评论内容,而不是现在的伪代码,该如何处理?

希望高手能帮我解决这两问题吧

#5


你先用firebug来查看这个页面,我估计着用id直接访问到的应该是执行后的页面数据

#6


引用 5 楼 yeah2000 的回复:
你先用firebug来查看这个页面,我估计着用id直接访问到的应该是执行后的页面数据


firebug好像是Firefox的一个插件,不知道是否能够查看
此外我的主要目的是爬取数据,也不能用这个插件手工去整吧!

#7


首先ie也有firebug
其次,你可以用firefox来打开页面使用火狐的插件

主要我想说明的是,页面是脚本执行的结果;那么使用firebug应该能看见执行的结果页面,而不是脚本页面。
我是不太确定firebug是否能看到执行结果的页面代码,并且你通过C#调用GetElementById来得到的数据应该是页面脚本执行之后的数字。但是要看id到底是多少,这个id不一定是执行之前的id(也可能的动态生成的标签来显示的)

#8


引用 7 楼 yeah2000 的回复:
首先ie也有firebug
其次,你可以用firefox来打开页面使用火狐的插件

主要我想说明的是,页面是脚本执行的结果;那么使用firebug应该能看见执行的结果页面,而不是脚本页面。
我是不太确定firebug是否能看到执行结果的页面代码,并且你通过C#调用GetElementById来得到的数据应该是页面脚本执行之后的数字。但是要看id到底是多少,这个id不一定是执行之前的id(……


Firebug 可以看到执行后的代码。
不过webbrowser却不知道能否看到,反正htmlunit是不可以,看来要想得到程序调用执行后的代码很难。
至于是否能够调用firebug,没精力再弄了。
还是按以前水木上一位教的直接访问数据库得了。

#1


我也有这个问题。。帮顶啦。

#2


webBrowser1.Document.InvokeScript
执行页面上的脚本

#3


WebBrowser.InvokeScript 通过调用页面里面的函数
js 执行后的内容无需抓取

#4


引用 3 楼 wuyq11 的回复:
WebBrowser.InvokeScript 通过调用页面里面的函数
js 执行后的内容无需抓取


有的javascript代码如分页,只要执行就可以了
可是有的内容是调用script来执行出来的。。。

比如:

1.(已有<strong id="top_orgin_count"></strong>条评论)  怎么获取top_orgin_count的具体数字?
2.腾讯新闻评论中,评论内容是用:<div id='loading_orgin' style='color:#999; margin:30px 0 30px 250px;'>加载的。我要得到里面的具体评论内容,而不是现在的伪代码,该如何处理?

希望高手能帮我解决这两问题吧

#5


你先用firebug来查看这个页面,我估计着用id直接访问到的应该是执行后的页面数据

#6


引用 5 楼 yeah2000 的回复:
你先用firebug来查看这个页面,我估计着用id直接访问到的应该是执行后的页面数据


firebug好像是Firefox的一个插件,不知道是否能够查看
此外我的主要目的是爬取数据,也不能用这个插件手工去整吧!

#7


首先ie也有firebug
其次,你可以用firefox来打开页面使用火狐的插件

主要我想说明的是,页面是脚本执行的结果;那么使用firebug应该能看见执行的结果页面,而不是脚本页面。
我是不太确定firebug是否能看到执行结果的页面代码,并且你通过C#调用GetElementById来得到的数据应该是页面脚本执行之后的数字。但是要看id到底是多少,这个id不一定是执行之前的id(也可能的动态生成的标签来显示的)

#8


引用 7 楼 yeah2000 的回复:
首先ie也有firebug
其次,你可以用firefox来打开页面使用火狐的插件

主要我想说明的是,页面是脚本执行的结果;那么使用firebug应该能看见执行的结果页面,而不是脚本页面。
我是不太确定firebug是否能看到执行结果的页面代码,并且你通过C#调用GetElementById来得到的数据应该是页面脚本执行之后的数字。但是要看id到底是多少,这个id不一定是执行之前的id(……


Firebug 可以看到执行后的代码。
不过webbrowser却不知道能否看到,反正htmlunit是不可以,看来要想得到程序调用执行后的代码很难。
至于是否能够调用firebug,没精力再弄了。
还是按以前水木上一位教的直接访问数据库得了。