平常办公中经常需要从网页上摘取信息,填入excel,如果采集的信息多的话,还真是费时费力。那么这项工作如何让按键精灵来帮你搞定呢?往下看……
平常办公中经常需要从网页上摘取信息,填入excel,如果采集的信息多的话,还真是费时费力。那么这项工作如何让按键精灵来帮你搞定呢?往下看……
一、脚本思路
脚本大致分为两个部分:获取网页上的信息,把信息填入EXCEL表格
1、打开浏览器,进入目标网站
2、提取网页的信息,解析出需要的标题、链接、作者、时间等信息
3、打开EXCEL表格,填入对应的信息
二、插件命令
(插件可到原文中下载)
1、【神梦填表】插件是用来对IE、Chrome浏览器进行操作的命令库,先来看下这次会用到的命令
命令名称:谷歌_启动 |
命令名称:方法_网页打开 |
命令名称:方法_取状态 |
命令名称:网页_执行JS |
命令名称:网页_取元素信息 |
插件中的方法有很多,详细的命令使用方法和范例可以下载插件后在帮助文件里查看。
2、【懒人Office】插件中用到了读写EXCEL命令的,相关命令可以相行百度一下相关的教程.
三、脚本实现
先获取下界面上的一些配置信息。
// 初始化配置
Dim ChromePath, ExcelPath
// 这里需要换成自己本机上的谷歌浏览器路径
ChromePath = "C:\Program Files\Google\Chrome\Application\chrome.exe"
ExcelPath = Form1.BrowseBox1.Path
通过插件来打开浏览器并且等待网页的加载完成。
// 打开谷歌浏览器
ret = 神梦_网页填表.谷歌_启动(ChromePath)
If ret = "" Then
TracePrint "启动失败,请先彻底关闭谷歌浏览器,再启动脚本!"
ExitScript
Else
TracePrint "启动成功!"
End If
// 等待网页的加载完成 换成你需要的地址
Call 神梦_网页填表.方法_网页打开("http://it-club.cn")
Do
Delay 500
Loop Until 神梦_网页填表.方法_取状态() = 4
接下来就开始获取网页里帖子的信息了,需要先来获取一下帖子的数量,这里是用执行JS的方法来获取的。
// 通过执行JS来获取当页帖子的数量
Dim PostCount
PostCount = Cint(神梦_网页填表.网页_执行JS(1, "return document.getElementsByClassName('ordinarytheme').length"))
TracePrint PostCount
通过分析网页的结构,可以发现每条帖子所需要的信息都是在一个tbody标签里的,所以我们可以获取每个tbody里的内容,然后用正则表达式来解析获取出想要的信息。
先来编写一个正则解析的函数,因为按键精灵本身没有相关的命令,所以我们需要借助VBS的功能来实现(按键精灵和VBS有比较高的兼容性,可以运行大部分的VBS代码)。
Function RegexFindM(FindExp, FindText)
Dim RegEx, Matches, Match
Set RegEx = New RegExp
RegEx.IgnoreCase = true
RegEx.Pattern = FindExp
Set Matches = regEx.Execute(FindText)
If Matches.Count > 0 Then
If Matches(0).SubMatches.Count > 0 Then
RegexFindM = Matches(0).SubMatches(0)
End If
End If
Set Matches = Nothing
Set RegEx = Nothing
End Function
现在就可以通过遍历每个帖子的元素内容解析出想要的信息了。
// 遍历每个帖子
Dim HTML
For i = 13 To PostCount + 12
HTML = 神梦_网页填表.网页_取元素信息("html", "//*[@id='threadlist']/tbody[" & i & "]")
PostTitle = RegexFindM("<a .+ href=""/showtopic-.*?.aspx"">([^<]*?)</a>", HTML)
PostUrl = RegexFindM("<a .+ href=""(/showtopic-.*?.aspx)"">[^<]*?</a>", HTML)
PostUser = RegexFindM("<a href=""/userinfo-.*?.aspx"">([^<]*?)</a>", HTML)
PostDate = RegexFindM("<em>(\d\d\d\d-\d\d-\d\d \d\d:\d\d)</em>", HTML)
PostUrl = "http://bbs.anjian.com" & PostUrl
TracePrint PostTitle & ", " & PostUrl & ", " & PostUser & ", " & PostDate
Delay 500
Next
信息获取到了,那我们还得写到EXCEL表格里呢,所以得小小的改动下这个代码,加上写入表格的功能,这样全部功能就实现了
转自按键精灵,个人收藏备用。按键精灵附源码 网页数据采集填入excel脚本如何实现?
全文详见:http://it-club.cn/post/207.html
访客