直接是不行的。
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怎么获取里面的网页句柄等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)