• 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:2021-12-03

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

登录 后使用快捷导航
没有帐号? 注册

发新话题 回复该主题

股票信息自动采集脚本教程来了,源码快收走! [复制链接]

1#
教程最后附按键源码,欢迎新手学习-
在抖音上关注“按键精灵”(抖音号:GUKOOHOT),我们将不定期发布各类办公中、生活里会用到的脚本小技巧,本篇教程小视频,已发布于抖音,欢迎观看!


一、脚本流程
1. 创建Excel表格,用于记录汇总数据
2. 打开目标网站采集数据
3. 数据记录表格
4. 表格发送邮件

二、创建表格
本地先创建Excel表格,并且设定好表格的表头列

  1. // 新建表格并设定表格路径
  2. ExcelIndex = LazyOffice.ExcelOpen("股票采集.xlsx", 1)
  3. ExcelPath = "D:\脚本演示\股票采集" & Hour(Time()) & Minute(Time()) & ".xlsx"


  4. // 写入表头
  5. Call LazyOffice.ExcelWrite(1, 1, 1, "股票代码")
  6. Call LazyOffice.ExcelWrite(1, 1, 2, "股票简称")
  7. Call LazyOffice.ExcelWrite(1, 1, 3, "最新价")
  8. Call LazyOffice.ExcelWrite(1, 1, 4, "涨跌额")
  9. Call LazyOffice.ExcelWrite(1, 1, 5, "涨跌幅")
  10. Call LazyOffice.ExcelWrite(1, 1, 6, "昨收")
  11. Call LazyOffice.ExcelWrite(1, 1, 7, "今开")
  12. Call LazyOffice.ExcelWrite(1, 1, 8, "最高")
  13. Call LazyOffice.ExcelWrite(1, 1, 9, "最低")
  14. Call LazyOffice.ExcelWrite(1, 1, 10, "资金净流入")
  15. Call LazyOffice.ExcelWrite(1, 1, 11, "成交量")
  16. Call LazyOffice.ExcelWrite(1, 1, 12, "成交额")
  17. Call LazyOffice.ExcelWrite(1, 1, 13, "换手率")
复制代码

三、采集数据
目标网站:http://data.10jqka.com.cn/hgt/hgtb/#J-ajax-main (只是以只网站进行举例)

我们需要采集下图种的所有股票信息:

您所在的用户组无法下载或查看附件


这里为了提高采集的效率,使用了JS的方法来直接采集整页表格里的内容,有兴趣的可以自行百度JS的DOM操作的相关资料学习
  1. Function 采集表格信息()
  2. Dim Code
  3. Code = Code & "tb = document.querySelectorAll('.m-table.J-ajax-table')[2];"
  4. Code = Code & "result = '';"
  5. Code = Code & "for (let row = 1; row < tb.rows.length; row++) {"
  6. Code = Code & " for (let col = 1; col < tb.rows[row].cells.length; col++) {"
  7. Code = Code & " result = result + tb.rows[row].cells[col].outerText + '|';"
  8. Code = Code & " }"
  9. Code = Code & " result = result + ',';"
  10. Code = Code & "}"
  11. Code = Code & "return result;"
  12. TracePrint Code
  13. Dim Result : Result = 神梦_网页填表.网页_执行JS(1, Code)

  14. 采集表格信息 = Split(Result, ",")
  15. End Function
复制代码

函数返回的是一个数组,每个元素是页面中的单条股票信息,方便后续的调用。采集过程中还涉及到翻页的操作,每次采集完单页后点击【下一页】按钮,继续采集下一页内容。

通过实际分析可以发现当翻到最后一页的时候是没有【下一页】按钮的,因此可以借此来判断是否已经全部采集完毕

  1. Function 翻页()
  2. 翻页 = true
  3. // 下一页有两种不同的特征,需要都兼容
  4. If 神梦_网页填表.网页_元素是否存在("//*[@id=""table2""]/div/a[8]") Then
  5. Call 神梦_网页填表.网页_点击元素("//*[@id=""table2""]/div/a[8]")
  6. ElseIf 神梦_网页填表.网页_元素是否存在("//*[@id=""table2""]/div/a[6]") Then
  7. Call 神梦_网页填表.网页_点击元素("//*[@id=""table2""]/div/a[6]")
  8. Else
  9. 翻页 = false
  10. End If
  11. End Function
复制代码

四、数据记录
结合上个部分封装的功能,就可以用一个循环实现边采集边记录数据。
  1. Do
  2. Dim Items : Items = 采集表格信息()
  3. For i = 0 To UBound(Items) - 1
  4. Dim Item : Item = Items(i)
  5. Dim Cols : Cols = Split(Item, "|")
  6. For j = 0 To UBound(Cols) - 1
  7. Call LazyOffice.ExcelWrite(1, G_CurrRow, j + 1, Cols(j))
  8. Next
  9. G_CurrRow = G_CurrRow + 1
  10. Delay 10
  11. Next
  12. If 翻页() = false Then
  13. Exit Do
  14. End If
  15. Loop
复制代码

采集当前页内容,遍历每条数据,分割之后逐条记录到表格里即可。
  1. 发送邮件
  2. 发送邮件就直接使用按键自带的命令库来实现即可
  3. // 发送邮件
  4. Dim FromEmail, AuthCode, ToEmail
  5. FromEmail = "发件人邮箱地址"
  6. AuthCode = "发件人邮箱授权码" // 到邮箱设置中的安全设置里获取
  7. ToEmail = Form1.InputBox2.Text

  8. Dim Result : Result = Lib.网络.发送邮件(FromEmail, AuthCode, ToEmail, "股票信息采集", "股票信息采集完毕", ExcelPath)
  9. If Result Then
  10. MessageBox "采集完毕并已发送邮件"
  11. Else
  12. MessageBox "邮件发送失败,检查发件人地址和密码是否正确,确保邮箱中已开启POP协议功能"
  13. End If
复制代码
完整源码下载:
您所在的用户组无法下载或查看附件



关注按键精灵抖音号,我们将不定期发布各类办公中、生活里会用到的脚本小技巧哦~







    已有1评分我要评分查看所有评分

    本主题由 超级版主 瑞祥幽冥狼 于 2022/1/24 14:41:54 执行 审核帖子 操作
    2#

    下载了~ 感谢分享

    3#

    大神 找不到 神梦_网页填表.qml 这个能提供下载吗? 还是我插件版本不对?

    4#


    5#

    回复 1楼兄弟客服03的帖子

    厉害了,我的哥

    6#

    语义错误:脚本 股票定时监控 ,第2行:没有找到插件。错误附加码=2685:0
    语义错误:脚本 股票定时监控 ,第0行:没有找到库文件C:\Temp\Lib\神梦_网页填表.QML。错误附加码=2951 大佬这个问题怎么解决?

    7#


    8#


    9#


    10#

    该用户帖子内容已被屏蔽

    11#

    太厉害了。学无止境。

    12#

    感谢大神分享 学无止境

    13#

    测试了一下发现 第1页会重复的记录一次,而最后也缺失.
    是什么原因

    14#

    为什么第一张表,会重复采集呢

    15#

    为什么第一张表,会重复采集呢

    发新话题 回复该主题