- 管理员
- 684365
- 4794
- 0
- 1256 朵
- 7706 个
- 1265 个
- 236380
- 2011-06-13
|
1#
t
T
发表于 2020-12-16 10:57
|
|只看楼主
教程最后附按键源码,欢迎新手学习-
在抖音上关注“按键精灵”(抖音号:GUKOOHOT),我们将不定期发布各类办公中、生活里会用到的脚本小技巧,本篇教程小视频,已发布于抖音,欢迎观看! |
一、脚本流程
1. 创建Excel表格,用于记录汇总数据 2. 打开目标网站采集数据 3. 数据记录表格 4. 表格发送邮件
二、创建表格 本地先创建Excel表格,并且设定好表格的表头列
- // 新建表格并设定表格路径
- ExcelIndex = LazyOffice.ExcelOpen("股票采集.xlsx", 1)
- ExcelPath = "D:\脚本演示\股票采集" & Hour(Time()) & Minute(Time()) & ".xlsx"
- // 写入表头
- Call LazyOffice.ExcelWrite(1, 1, 1, "股票代码")
- Call LazyOffice.ExcelWrite(1, 1, 2, "股票简称")
- Call LazyOffice.ExcelWrite(1, 1, 3, "最新价")
- Call LazyOffice.ExcelWrite(1, 1, 4, "涨跌额")
- Call LazyOffice.ExcelWrite(1, 1, 5, "涨跌幅")
- Call LazyOffice.ExcelWrite(1, 1, 6, "昨收")
- Call LazyOffice.ExcelWrite(1, 1, 7, "今开")
- Call LazyOffice.ExcelWrite(1, 1, 8, "最高")
- Call LazyOffice.ExcelWrite(1, 1, 9, "最低")
- Call LazyOffice.ExcelWrite(1, 1, 10, "资金净流入")
- Call LazyOffice.ExcelWrite(1, 1, 11, "成交量")
- Call LazyOffice.ExcelWrite(1, 1, 12, "成交额")
- Call LazyOffice.ExcelWrite(1, 1, 13, "换手率")
复制代码 三、采集数据 目标网站:http://data.10jqka.com.cn/hgt/hgtb/#J-ajax-main (只是以只网站进行举例) 我们需要采集下图种的所有股票信息:
 - 您所在的用户组无法下载或查看附件
这里为了提高采集的效率,使用了JS的方法来直接采集整页表格里的内容,有兴趣的可以自行百度JS的DOM操作的相关资料学习
- Function 采集表格信息()
- Dim Code
- Code = Code & "tb = document.querySelectorAll('.m-table.J-ajax-table')[2];"
- Code = Code & "result = '';"
- Code = Code & "for (let row = 1; row < tb.rows.length; row++) {"
- Code = Code & " for (let col = 1; col < tb.rows[row].cells.length; col++) {"
- Code = Code & " result = result + tb.rows[row].cells[col].outerText + '|';"
- Code = Code & " }"
- Code = Code & " result = result + ',';"
- Code = Code & "}"
- Code = Code & "return result;"
- TracePrint Code
- Dim Result : Result = 神梦_网页填表.网页_执行JS(1, Code)
- 采集表格信息 = Split(Result, ",")
- End Function
复制代码 函数返回的是一个数组,每个元素是页面中的单条股票信息,方便后续的调用。采集过程中还涉及到翻页的操作,每次采集完单页后点击【下一页】按钮,继续采集下一页内容。
通过实际分析可以发现当翻到最后一页的时候是没有【下一页】按钮的,因此可以借此来判断是否已经全部采集完毕
- Function 翻页()
- 翻页 = true
- // 下一页有两种不同的特征,需要都兼容
- If 神梦_网页填表.网页_元素是否存在("//*[@id=""table2""]/div/a[8]") Then
- Call 神梦_网页填表.网页_点击元素("//*[@id=""table2""]/div/a[8]")
- ElseIf 神梦_网页填表.网页_元素是否存在("//*[@id=""table2""]/div/a[6]") Then
- Call 神梦_网页填表.网页_点击元素("//*[@id=""table2""]/div/a[6]")
- Else
- 翻页 = false
- End If
- End Function
复制代码 四、数据记录
结合上个部分封装的功能,就可以用一个循环实现边采集边记录数据。
- Do
- Dim Items : Items = 采集表格信息()
- For i = 0 To UBound(Items) - 1
- Dim Item : Item = Items(i)
- Dim Cols : Cols = Split(Item, "|")
- For j = 0 To UBound(Cols) - 1
- Call LazyOffice.ExcelWrite(1, G_CurrRow, j + 1, Cols(j))
- Next
- G_CurrRow = G_CurrRow + 1
- Delay 10
- Next
- If 翻页() = false Then
- Exit Do
- End If
- Loop
复制代码 采集当前页内容,遍历每条数据,分割之后逐条记录到表格里即可。
- 发送邮件
- 发送邮件就直接使用按键自带的命令库来实现即可
- // 发送邮件
- Dim FromEmail, AuthCode, ToEmail
- FromEmail = "发件人邮箱地址"
- AuthCode = "发件人邮箱授权码" // 到邮箱设置中的安全设置里获取
- ToEmail = Form1.InputBox2.Text
- Dim Result : Result = Lib.网络.发送邮件(FromEmail, AuthCode, ToEmail, "股票信息采集", "股票信息采集完毕", ExcelPath)
- If Result Then
- MessageBox "采集完毕并已发送邮件"
- Else
- MessageBox "邮件发送失败,检查发件人地址和密码是否正确,确保邮箱中已开启POP协议功能"
- End If
复制代码 完整源码下载:  - 您所在的用户组无法下载或查看附件
关注按键精灵抖音号,我们将不定期发布各类办公中、生活里会用到的脚本小技巧哦~

|