获取webbrowser控件 网页的源码(收藏)

    技术2022-05-11  107

    我在网上找到使用rft控件保存webbrowse文本  txtHtml是RichTextBoxtxtHTML.Text = WebBrowser1.document.body.innerText'flag :rsftext 保存为txt文件,strtmp文件路径txtHTML.saveFile strtmp, rtfText

    将其name属性设置为web

    Private Sub Command1_Click()    web.Navigate "www.google.com"End Sub

    Private Sub web_DocumentComplete(ByVal pDisp As Object, URL As Variant)Set doc = web.DocumentFor Each i In doc.All    msgbox typename(i)    Text1.Text = Text1.text & vbclrf & i.innertextNextEnd sub

    ===========================================================================================转载

    '引用 Microsoft HTML Object Library

        Dim oDoc As HTMLDocument    Dim oElement As Object    Dim oTxtRgn As Object    Dim sSelectedText As String        Set oDoc = WebBrowser1.Document'获得文档对象    Set oElement = oDoc.getElementById("T1")'获得ID="T1"的对象    Set oTxtRgn = oDoc.selection.createRange'获得文档当前正选择的区域对象       sSelectedText = oTxtRgn.Text'选择区域文本赋值

        oElement.Focus'"T1"对象获得焦点

        oElement.Select'全选对象"T1"

        Debug.Print "你选择了文本:" & sSelectedText

    上面这段儿还附送了其他功能,呵呵。精简一下是这样:    Dim oDoc As Object    Dim oTxtRgn As Object    Dim sSelectedHTML As String        Set oDoc = WebBrowser1.Document '获得文档对象    Set oTxtRgn = oDoc.selection.createRange '获得文档当前正选择的区域对象       sSelectedHTML = oTxtRgn.htmlText '选择区域文本赋值

        Text1.Text=sSelectedHTML '文本框显示抓取得HTML源码    ......'或者继续分析源码

    ==================================================================================================

    我用WebBrowser取得网页源码,直接运行正常,但在编译后出错Private Sub Command1_Click()WebBrowser1.Navigate "http://www.sdqx.gov.cn/sdcity.php"End Sub

    Private Sub WebBrowser1_DownloadComplete()'页面下载完毕Dim doc, objhtmlSet doc = WebBrowser1.Document

    Set objhtml = doc.body.createtextrange()If Not IsNull(objhtml) ThenText1.Text = objhtml.htmltextEnd If

    End Sub

    我用WebBrowser取得网页源码,直接运行正常,但在编译后出错

    提示:实时错误“91”    Object 变量或 with 块变量没有设置可能是没有下载完所致,

    Private Sub WebBrowser1_DownloadComplete()if webbrowser.busy=false thenDim doc, objhtmlSet doc = WebBrowser1.Document

    Set objhtml = doc.body.createtextrange()If Not IsNull(objhtml) ThenText1.Text = objhtml.htmltextEnd Ifend ifEnd Sub

    你要得网页源码用 xmlhttp比较好

    先引用 msxml

    Dim x As New MSXML2.XMLHTTP x.open "get", "http://www.sina.com", False x.send

    MsgBox StrConv(x.responseBody, vbUnicode)

     

    ===============================================================================================我在网上找到使用rft控件保存webbrowse文本  txtHtml是RichTextBoxtxtHTML.Text = WebBrowser1.document.body.innerText'flag :rsftext 保存为txt文件,strtmp文件路径txtHTML.saveFile strtmp, rtfText

    =====================================================================================

    Private Sub WebBrowser1_DownloadComplete()    Dim objHtml As Object    '下载完成时状态栏显示“Link Finished”    Set objHtml = Me.WebBrowser1.Document.Body.Createtextrange()    If Not IsNull(objHtml) Then        Text1.Text = objHtml.htmltext    End IfEnd Sub使用inet控件Source1 = Inet1.OpenURL("www.csdn.net")If Source1 <> "" ThenRichTextBox1.Text = Source1Me.Inet1.CancelElseSource = MsgBox("Source code is not available.", vbInformation, "Source Code")End If

    Private Sub Command1_Click()    Text1.Text = WebBrowser1.Document.body.innerHTMLEnd Sub

    ==================================================================================加入timer,commandbutton,textprivate sub command1_click()webbrowser1.navigate http://www.sohu.com/timer1.enabled=trueend sub

    private sub timer1_timer()dim doc,objhtml as objectdim i as integerdim strhtml as string

    if not webbrowser1.busy thenset doc=webbrowser1.documenti=0set objhtml=doc.body.createtextrange()if not isnull(objhtml) thentext1.text=objhtml.htmltextend iftimer1.enabled=falseend ifend sub

    Dim doc, objhtml As ObjectIf Not webbrowser1.Busy Then         Set doc = webbrowser1.Document         Set objhtml = doc.body.createtextrange()         If Not IsNull(objhtml) Then            text1.text=objhtml.htmltext         End If         Set doc = Nothing         Set objhtml = Nothing

    End If

    ===================================================================================================或者试试用InternetReadFile,效果也可以:Option Explicit

    Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" ( _                    ByVal sAgent As String, ByVal lAccessType As Long, _                    ByVal sProxyName As String, ByVal sProxyBypass As String, _                    ByVal lFlags As Long) As LongPrivate Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" ( _                    ByVal hInternetSession As Long, ByVal sUrl As String, _                    ByVal sHeaders As String, ByVal lHeadersLength As Long, _                    ByVal lFlags As Long, ByVal lContext As Long) As LongPrivate Declare Function InternetReadFile Lib "wininet.dll" ( _                    ByVal hFile As Long, ByVal sBuffer As String, _                    ByVal lNumBytesToRead As Long, _                    lNumberOfBytesRead As Long) As IntegerPrivate Declare Function InternetCloseHandle Lib "wininet.dll" ( _                    ByVal hInet As Long) As IntegerPrivate Const INTERNET_FLAG_NO_CACHE_WRITE = &H4000000Dim s

     

    Private Function GetUrlFile(stUrl As String) As String    Dim lgInternet As Long, lgSession As Long    Dim stBuf As String * 1024    Dim inRes As Integer    Dim lgRet As Long    Dim stTotal As String    stTotal = vbNullString    lgSession = InternetOpen("VBTagEdit", 1, vbNullString, vbNullString, 0)    If lgSession Then        lgInternet = InternetOpenUrl(lgSession, stUrl, vbNullString, _                                     0, INTERNET_FLAG_NO_CACHE_WRITE, 0)        If lgInternet Then            Do                inRes = InternetReadFile(lgInternet, stBuf, 1024, lgRet)                stTotal = stTotal & Mid$(stBuf, 1, lgRet)            Loop While (lgRet <> 0)        End If        inRes = InternetCloseHandle(lgInternet)    End If    GetUrlFile = stTotalEnd Function

    Private Sub Command1_Click()    Text1.Text = GetUrlFile("http://adsl.tsee.net/teleplay/view.asp?id=143")End Sub

    =====================================================================================================

     

    Set vDoc = WebBrowser1.Document'获取网页的源码For Each o In vDoc.All   DoEvents   htmlpage = htmlpage & o.innerHTMLNext然后用写二进制文件的方法将htmlpage的内容写入到.html文件中如果这个网页中含有框架那么要对框加进行处理。

    =======================================================================================================================


    最新回复(0)