设为首页
收藏本站
本站论坛
   
3
3
   
  文章列表      

WebBrowser控件(网页源代码提取)

本期考察的时网页数据的提取,从参赛答案来看,有不少是通过下载csv文件来提取数据,这并不

是本题的目的。这样的确很方便,但是如果网页不提供csv文件呢?
从网页提取数据主要有以下几种常用方法:
1、QueryTable
这种方法是最简单的,通过录制宏,就可以实现,缺点就是只能整个表格搞下来,不能有选择的

导入数据。
2、WebBrowser控件
这种方法是不错的方法,WebBrowser控件很灵活,可以选择只导入表格某几列的数据,使用起来

也很方便,但是放个控件,总觉得不如不用控件的爽。
3、InternetExplorer
调用ie来打开网页,与WebBrowser差不多。
4、INET控件
这是VB的一个控件,需要安装VB才有,与httpRequest擦不多。
5、httpRequest
这种方法功能最全,但是使用起来不太方便。

本题适合的方法为WebBrowser控件和httpRequest方法。
WebBrowser控件较简单。
httpRequest方法通过获取网页源文件,然后提取。要注意的是获取源文件的时候可能会出现乱码

,这时需要进行编码转换,将GB2312转为UTF-8。提取源文件中的内容时,比较有效的方法时用正

则表达式来提取,正则表达式的功能十分强大,但是要灵活掌握还是要花点时间的。

参考答案:
关于WebBrowser控件的方法,这里就不给了(偷下懒:)),只给出一个提取部分列的小例子,可

以参考ldy888的答案,修改一下将会很不错,WebBrowser控件方法的速度很快,httpRequest要转

换编码,较废时间。

WebBrowser控件示例:
Sub web_data()
    Application.ScreenUpdating = False
    Me.WebBrowser1.Navigate "http://cn.finance.yahoo.com/q/hp?s=601988.SS&c=2006&a=06&b=5&f=2007&d=06&e=19&g=d"
    on error resume next
    Dim oDoc As Object
    Dim sDoc As Object
    Dim iText As String
    Set oDoc = Me.WebBrowser1.Document
    Set sDoc = Me.WebBrowser1.Document
    For DocElemsCnt = 0 To oDoc.all.Length - 1
        If oDoc.all.Item(DocElemsCnt).tagName = "TABLE" Then
            Set sDoc = oDoc.all.Item(DocElemsCnt)
            'MsgBox sDoc.innertext
            If Left(sDoc.innertext, 2) = "日期" And sDoc.Rows.Length > 1 Then
                    rCol = 0
                    For Rwlen = 0 To sDoc.Rows.Length - 2
                        rCol = rCol + 1
                            iText = sDoc.Rows(Rwlen).Cells(0).innertext
                            Cells(Rwlen + 1, 1).Value = iText
                            iText = sDoc.Rows(Rwlen).Cells(4).innertext
                            Cells(Rwlen + 1, 2).Value = iText
                    Next Rwlen
            End If
        End If
    Next DocElemsCnt
    Set oDoc = Nothing
    Set sDoc = Nothing
    MsgBox "数据更新完毕!"
    Application.ScreenUpdating = True
End Sub

这里只提供httpRequest+正则表达式方法的答案,供参考。


> >
 
 
   
 
网上赚钱申请指南
 

友情链接
个人主页
 
 
 
 

wel come to . 欢迎光临
宇宙浪仔