c#的webbrowser如何获得iframe里通过javascript生成的源代码

c#的webbrowser如何获得iframe里通过javascript生成的源代码,第1张

直接是不行的。

1、用c#往webbrowser里面外层网页注入一段javascript,这段javascript的作用是向iframe注入代码。

2、向iframe注入的代码的作用是获取document的源代码

3、把获取到的源代码返回到外层网页里面的一个对象里。

4、用c#从外层网页取这个源代码。

先引用HtmlAgilityPackdll这个类库,然后获得你要的那个元素的Xpath(浏览器右键审查元素,再在元素上右键复制Xpath),然后用下面的代码即可:

HtmlAgilityPackHtmlWeb web=new HtmlAgilityPackHtmlWeb();

HtmlAgilityPackHtmlDocument doc=webLoad("网页文件或网页链接");

HtmlAgilityPackHtmlNode node= docDocumentNodeSelectSingleNode("上面复制的Xpath");

nodeInnerHTML即是你要获得的值

代码如下,根据你的需要自行调整即可:

  '测试绑定网页中测试按钮单击事件

        Dim doc As HtmlDocument = webMainDocument

       Dim btnTest As HtmlElement = docAll("btnTest") 

 

        '委托处理事件的处理程序

        If Not IsNothing(btnTest) Then

            AddHandler btnTestClick, AddressOf btnTest_Click

       End If

 

 Private Sub btnTest_Click(ByVal sender As Object, ByVal e As HtmlElementEventArgs)

        Dim obj As HtmlElement = CType(sender, HtmlElement)

        DebugPrint("接收到 " & objId & " 的 " & eEventType & " 事件")

    End Sub

如果你懂开发,可以使用IE的F12开发人员工具或者Firefox的Firebug插件监控浏览器的所有请求和返回值,也可以借用Telerik 的 Fiddle 工具监控所有网络请求;

IE的F12开发人员工具在网络选项卡里面启用监控,需要手动启用;Firebug的也是在网络选项卡,不需要手动启用,只要开启Firebug窗口就会自动监控。

监控后你就可以查看到所有的GET请求,包括地址和返回数据,返回状态等等等等 :)

//首先获取表格对象,需引入mshtmldllIHTMLDocument2

document

=

webbrowerDocumentDomDocument

as

IHTMLDocument2;

IHTMLElementCollection

tables

=

(IHTMLElementCollection)documentalltags("TABLE");foreach

(IHTMLTable

table

in

tables){IHTMLTableSection

tts=

tabletHead;//因为TH标签是属于表格的表头信息;foreach(IHTMLElement

th

in

ttsrows){

SystemDiagnosticsDebugWriteLine(thinnerText)//遍历输出内容}}

代码行如下:

string s=webbrowser1DocumentText;

这个就是获取当前所显示的网页的HTML了

但是注意一个问题,如果说网页没有加载完毕的话,这么获取是获取不到的。

所以应该在加载完毕事件触发之后再去获取。

表单数据看HTML源码中的表单ID,然后通过

Set tb1 = WB1Documentgetelementbyid(tabledID) 来取得表单对象,

如果HTML源码中的表单没有ID,可以用For each来遍历找到所需的表单。

以下是从一个网页中的表格获取数据到MSGrid的代码,供参考:

Set tb1 = WB1Documentgetelementbyid("maintable")

'设置列头、列宽

For i = 0 To 11

MSH1ColWidth(i) = tb1Rows(0)cells(i)Width 15 15

MSH1TextMatrix(0, i) = tb1Rows(0)cells(i)innertext

Next

skip = 0

For Each crow In tb1Rows

If skip < 0 Then

skip = skip + 1

Else

rowstr = ""

If crowcells(0)innertext <> "序号" Then

For i = 0 To 11

tmp = crowcells(i)innertext

tmp = Replace(tmp, vbTab, " ")

rowstr = rowstr & tmp & vbTab

ReSizeCellHeight MSH1, MSH1Rows - 1, i

Next

MSH1AddItem rowstr

End If

End If

Next

以上就是关于c#的webbrowser如何获得iframe里通过javascript生成的源代码全部的内容,包括:c#的webbrowser如何获得iframe里通过javascript生成的源代码、webbrowser获取html元素值、WebBrowser怎么获取里面的网页句柄等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9480176.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存