分享

用VBA操作网页并抓取数据

 L罗乐 2017-04-19

问题:


最近老婆让我给上二年级的孩子做一份生字拼音表(带声调),这样孩子每天就可以读拼音默写词语,也就不需要家长陪在身边朗读了。


录入字母容易解决,但标声调就不好办了。我百度了一下,金山词霸提供了一个网页工具,输入汉字可转换成带声调的拼音。那问题来了:现在有八百多个生词,如果要每一个都这样查一次然后拷贝粘贴出来,简直太麻烦了。



方案:


既然拼音也是要录入到Excel的,那么用VBA来操作网页,把输入汉字-->点击“开始转换”按钮-->拷贝转换结果-->粘贴到Excel等步骤自动化,就省事多了。



代码:


Private Sub CommandButton1_Click()

    Dim IE As Object

    Dim i As Integer

    i = 1

    '打开网页:创建一个IE对象,然后给一些属性赋值。Visible是可见性,navigate是网页地址

    Set IE = CreateObject('internetexplorer.application')

    With IE

        .Visible = True

        .navigate 'http://hanyu.iciba.com/pinyin.html'

     '等待网页完全加载   

        Do Until .ReadyState = 4

            DoEvents

        Loop

        '拷贝汉字到网页文本框,然后点击转换按钮,并取出转换结果

        Do While Sheets('sheet1').Cells(i 1, 1).Value <> ''

      '从IE.Document.all句柄中把页面上要使用的节点找出来。这里的方法是:

       .document.all('source').Value 给以source为ID的文本框赋值

       .document.all.tags('img')(1).Click  点击图片集合里的第二张图片

       .document.all('to').Value  取出以to为ID的文本框内容


            .document.all('source').Value = Sheets('sheet1').Cells(i 1, 1).Value

            .document.all.tags('img')(1).Click

            

            Do Until .ReadyState = 4

                DoEvents

            Loop

        

            Sheets('sheet1').Cells(i 1, 2).Value = .document.all('to').Value

            i = i 1

        Loop

        '关闭网页

        .quit

    End With

End Sub


代码解释:(见注释)


贴士:


1)VBA只能操作IE浏览器,原因就一句话:都是微软家的产品嘛

2)要先引用Micorsoft Internet Controls


拓展:


你的工作中是否遇到过需要抓取网页数据的任务呢。。。?


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多