vba 抓取php网页,用VBA操作网页并抓取数据
问题:
最近妻子要求我为上二年级的学生准备一份制作生字拼音表带有声调标注的任务。这样一来,孩子们每天只需练习发音并记忆生字词组即可,也就不用家长每天陪伴孩子朗读课文了。
录入字母相对较为容易解决这个问题;然而标注声调这一问题却较为困难。我查阅了一下相关资料;并发现金山词霸确实提供了一个非常方便的网页工具;通过这一工具我们可以将输入的汉字转换成带声调的拼音形式。那么问题就出现了:现有超过800个生僻字需要逐一处理;如果每个字都要单独查询并进行复制粘贴操作;无疑会非常繁琐费时。
方案:
由于拼音同样需要导入到Excel中。因此可以通过编写VBA脚本来进行网页操作,并将输入汉字的过程自动化:首先打开目标Excel文件并创建新工作表;然后在工作表中输入待转换的汉字;接着启动网页转换工具;随后点击"开始转换"按钮;之后自动生成相应的拼音,并选择保存位置;最后将生成的内容拷贝并粘贴到目标单元格中即可完成操作。
代码:
Private Sub CommandButton1_Click()
Dim IE As Object
Dim i As Integer
i = 1
打开网页:生成一个IE对象实例,并设置其属性值。Visibility表示是否可见;navigate用于指定要访问的URL。
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
拓展:
你的工作中是否遇到过需要抓取网页数据的任务呢。。。?
