主题:请问如何取得WebBrowser控件中网页的源码?
wwc7654321
[专家分:1590] 发布于 2008-01-23 15:22:00
网页大致内容如下[quote]
<script language=Javascript>……</script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>xx</TITLE>
</HEAD>
<BODY>
<FORM ID="FORM1">
<INPUT TYPE=HIDDEN name="hd" VALUE="……">
…………
</FORM>
</BODY>
</HTML>[/quote]
大省略号是需要的数据,其中<INPUT TYPE=HIDDEN name="hd" VALUE="……">和…………我知道怎么取得,但<script language=Javascript>……</script>不在body中,用WebBrowser1.Object.Document.body.innerhtml显然也取不到,请问怎么取得页面全部内容?
回复列表 (共14个回复)
沙发
brokenworld [专家分:2640] 发布于 2008-01-23 17:34:00
vb里面好象有个typename,你取得document.all后,用print跟踪一下,然后用typename引用它就可以了。
板凳
wwc7654321 [专家分:1590] 发布于 2008-01-23 17:46:00
哈哈,果然取得了头部信息,
但“用typename引用它”请问typename如何引用?
3 楼
老大徒伤悲 [专家分:29120] 发布于 2008-01-23 20:17:00
如果不是要自动取得,而是手工操作的话
在网页的查看菜单里选源文件,就可以看到。
4 楼
wwc7654321 [专家分:1590] 发布于 2008-01-23 21:17:00
。。这个,
自然知道
5 楼
btxdlibin [专家分:2430] 发布于 2008-01-24 03:51:00
控件(Inet):Mircrosoft Internet Transfer Control 6.0
Dim Pos&
Private Sub Form_Load()
'根据获取programfan.com网站帖子,源文件获取,主题、作者、作者专家分
MsgBox Getinfo$("http://programfan.com/club/post-266178.html")
End Sub
Function Getinfo$(Web$)
Dim File() As Byte
Inet1.Cancel
Inet1.Protocol = icHTTP
File = Inet1.OpenURL(Web, icByteArray)
File = StrConv(File, vbUnicode)
Dim pos1&, pos2&
Dim Sign1$, Sign2$
Getinfo = "主题:" & GetStings(File, " 主题:</font>", "</b></td>", 0)
pos1 = InStr(Pos + 1, File, "作者")
Getinfo = Getinfo & vbCrLf & "作者:" & GetStings(File, "target=""_blank"">", "</a>", pos1)
Getinfo = Getinfo & vbCrLf & "专家分:" & GetStings(File, "专家分:", "</font>", Pos)
End Function
Function GetStings(S, Sign1$, Sign2$, StartPoS&)
Dim pos1&, pos2&
pos1& = InStr(StartPoS& + 1, S, Sign1)
pos2 = InStr(pos1 + 1, S, Sign2)
Pos = pos2
GetStings = Mid$(S, pos1 + Len(Sign1), pos2 - pos1 - Len(Sign1))
End Function
6 楼
华山论剑 [专家分:5310] 发布于 2008-01-24 09:22:00
楼主是想得到网页的脚本,如果熟悉HTML的对象结构,可以很容易地得到想要的web的一切部件。
对于楼主的问题,用scripts集合循环就可以直接得到。
7 楼
btxdlibin [专家分:2430] 发布于 2008-01-24 10:45:00
用我上面的写的函数获取取源文件里的JS代码应该是可以实现的.
我5#写的只是为了获取一个实例网址相关内容.
获取JS只要把下面这几句
Getinfo =.....
......
Getinfo = ...
替换成.
Text1.Text = GetStings(File, <script language=Javascript>", "</script>", 0)
就行了.
获得了网页源文件,这就是一个简单的字符串处理问题.
当然JS标示不只是这样,写个正则去匹配也可以.
8 楼
brokenworld [专家分:2640] 发布于 2008-01-24 10:50:00
Private Sub web1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
Dim x
If Not (pDisp Is web1.Object) Then Exit Sub
For Each x In web1.Document.All
Text1.Text = Text1.Text & TypeName(x) & vbCrLf
Next
End Sub
上面代码取得的google主页的对象名:
HTMLHtmlElement
HTMLHeadElement
HTMLTitleElement
HTMLMetaElement
HTMLStyleElement
HTMLScriptElement
HTMLBody
HTMLDivElement
HTMLPhraseElement
HTMLSpanElement
HTMLUnknownElement
HTMLSpanElement
HTMLAnchorElement
HTMLSpanElement
HTMLAnchorElement
HTMLSpanElement
HTMLAnchorElement
HTMLSpanElement
HTMLAnchorElement
HTMLSpanElement
HTMLAnchorElement
HTMLDivElement
HTMLDivElement
HTMLDivElement
HTMLPhraseElement
HTMLAnchorElement
HTMLBlockElement
HTMLScriptElement
HTMLBRElement
HTMLAnchorElement
HTMLImg
HTMLBRElement
HTMLBRElement
HTMLFormElement
HTMLTable
HTMLTableSection
HTMLTableRow
HTMLTableCell
HTMLTableCell
HTMLInputElement
HTMLInputElement
HTMLBRElement
HTMLInputElement
HTMLInputElement
HTMLTableCell
HTMLFontElement
HTMLAnchorElement
HTMLBRElement
HTMLAnchorElement
HTMLBRElement
HTMLAnchorElement
HTMLTableRow
HTMLTableCell
HTMLFontElement
HTMLSpanElement
HTMLInputElement
HTMLLabelElement
HTMLInputElement
HTMLLabelElement
HTMLInputElement
HTMLLabelElement
HTMLInputElement
HTMLLabelElement
HTMLBRElement
HTMLBRElement
HTMLFontElement
HTMLAnchorElement
HTMLAnchorElement
HTMLAnchorElement
HTMLSpanElement
HTMLScriptElement
HTMLParaElement
HTMLAnchorElement
HTMLParaElement
HTMLFontElement
HTMLFontElement
HTMLAnchorElement
HTMLImg
HTMLScriptElement
9 楼
逍肖11 [专家分:50] 发布于 2008-01-24 11:55:00
可以到 ——www.evget.com——:慧都控件网,上看看有没有你需要的技术。是全国最大控件代理技术支持商 也欢迎同我联系交流产品及技术,一起进步。QQ:903506412
10 楼
华山论剑 [专家分:5310] 发布于 2008-01-24 12:32:00
用直接的方式就行了:
Dim s As String
Dim num As Integer
Dim i As Integer
num = web1.Document.scripts.length
'如果要取frame中的脚本,用下面的方式
'num = web1.Document.frames(0).Document.scripts.length
For i = 0 To num - 1
s = web1.Document.scripts(i).outerHTML
Debug.Print s
Next
我来回复