回 帖 发 新 帖 刷新版面

主题:请问如何取得WebBrowser控件中网页的源码?

网页大致内容如下[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个回复)

沙发

vb里面好象有个typename,你取得document.all后,用print跟踪一下,然后用typename引用它就可以了。

板凳

哈哈,果然取得了头部信息,
但“用typename引用它”请问typename如何引用?

3 楼

如果不是要自动取得,而是手工操作的话
在网页的查看菜单里选源文件,就可以看到。

4 楼

。。这个,

自然知道

5 楼

控件(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, "&nbsp;主题:</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 楼

楼主是想得到网页的脚本,如果熟悉HTML的对象结构,可以很容易地得到想要的web的一切部件。

对于楼主的问题,用scripts集合循环就可以直接得到。

7 楼

用我上面的写的函数获取取源文件里的JS代码应该是可以实现的.
我5#写的只是为了获取一个实例网址相关内容.

获取JS只要把下面这几句
Getinfo =.....
......
Getinfo = ...
替换成.
Text1.Text = GetStings(File, <script language=Javascript>", "</script>", 0)
就行了.
获得了网页源文件,这就是一个简单的字符串处理问题.
当然JS标示不只是这样,写个正则去匹配也可以.



8 楼

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 楼

可以到 ——www.evget.com——:慧都控件网,上看看有没有你需要的技术。是全国最大控件代理技术支持商  也欢迎同我联系交流产品及技术,一起进步。QQ:903506412

10 楼

用直接的方式就行了:

    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

我来回复

您尚未登录,请登录后再回复。点此登录或注册