ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2159|回复: 8

[讨论] VBA网爬+股票查询

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-9-24 15:56 | 显示全部楼层 |阅读模式
嗯~ o(* ̄▽ ̄*)o,在某论坛看到一位老哥发了一个股票爬取文件

忍不住就下载下来自己改了改,相对于其单元格的操作我JIO的数组还是快一点儿吧


不过运行了一下感觉还是很慢,不知道是不是msxml2.xmlhttp这个的问题


所以想来问一下,不知道可不可以再加优化一下速度!



下面附上老哥原码和我改的以及文件。


  1. ‘这个是老哥的原码
  2. Sub GET_STOCK()
  3. '-------------Clean old data--------------------------------
  4. Dim bb%, aa%
  5. aa = [d1048576].End(xlUp).row
  6. bb = [b1048576].End(xlUp).row
  7. Range("b3:r3" & bb).ClearContents
  8. '--------------data update time-------------------------------
  9. Range("B1") = Format(Now, "mm-dd / hh:mm:ss") 'update time

  10. '---------------judge stock of SH or SZ------------------------------
  11.   For r = 3 To Range("A1").CurrentRegion.Rows.Count
  12.   dm = Cells(r, 1).Value
  13.         If left(dm, 1) = 6 Or dm = "000001" Then
  14.                url = "http://qt.gtimg.cn/q=sh" & dm 'Shanghai stock
  15.         Else
  16.                url = "http://qt.gtimg.cn/q=sz" & dm 'Shenzhen stock
  17.         End If
  18.           With CreateObject("msxml2.xmlhttp")
  19.         .Open "GET", url, False
  20.         .send
  21.         sp = Split(.responseText, "~")
  22.         If UBound(sp) > 3 Then
  23. '---------------get data part------------------------------
  24. Cells(r, 2).Value = sp(1)   'Name
  25. Cells(r, 3).Value = sp(3)   'Current Price

  26. Cells(r, 5).Value = sp(32)   'Up down %
  27. Cells(r, 6).Value = sp(4)   'Yesterday Price
  28. Cells(r, 7).Value = sp(5)   'Opening price
  29. Cells(r, 8).Value = sp(33)   'Highest
  30. Cells(r, 9).Value = sp(34)   'Minimum
  31. Cells(r, 10).Value = sp(47)   'Harden price
  32. Cells(r, 11).Value = sp(48)   'Drop stop price
  33. Cells(r, 12).Value = sp(38)   'Turnover rate
  34. Cells(r, 13).Value = sp(43)   'Amplitude
  35. Cells(r, 14).Value = sp(6)   'Trading volume
  36. Cells(r, 15).Value = sp(39)   'P/e ratio
  37. Cells(r, 16).Value = sp(44)   'Current market
  38. Cells(r, 17).Value = sp(45)   'Total market value
  39. Cells(r, 18).Value = sp(46)   'price-to-book
  40. '---------------Up or Down color------------------------------
  41. Dim zhangDie As Double
  42.             zhangDie = sp(31)  'up down price
  43.             Cells(r, 4).Value = zhangDie  'up down price
  44.             If zhangDie > 0 Then
  45.               
  46.                 Cells(r, 4).Font.Color = vbRed
  47.                 Cells(r, 5).Font.Color = vbRed
  48.             Else
  49.                  
  50.                 Cells(r, 4).Font.Color = &H228B22
  51.                 Cells(r, 5).Font.Color = &H228B22
  52.             End If
  53.         Else
  54.         End If
  55.     End With
  56.     Next
  57. End Sub
复制代码

  1. ’这儿是我改的

  2. Option Explicit
  3. Sub emmmm()
  4.    
  5.     Dim nR%, r%, dm$, url$, t
  6.     Dim arr, ssr
  7.     t = Timer
  8.     Application.ScreenUpdating = False
  9.   '==================================================================
  10.    
  11.     With Sheet3
  12.         arr = .Range("a1").CurrentRegion
  13.         arr(1, 2) = Format(Now, "mm-dd") '更新时间
  14.         arr(1, 3) = Format(Now, "hh:mm")
  15.         For r = 3 To UBound(arr)
  16.             dm = arr(r, 1)
  17.             
  18.             If left(dm, 1) = 6 Or dm = "000001" Then
  19.                 url = "http://qt.gtimg.cn/q=sh" & dm '上交所
  20.             Else
  21.                 url = "http://qt.gtimg.cn/q=sz" & dm '深交所
  22.             End If
  23.             
  24.             With CreateObject("msxml2.xmlhttp")
  25.                 .Open "GET", url, False
  26.                 .send
  27.                 ssr = Split(.responseText, "~")
  28.                
  29.                 If UBound(ssr) > 3 Then
  30.                     arr(r, 2) = ssr(1): arr(r, 3) = ssr(3): arr(r, 5) = ssr(32): arr(r, 6) = ssr(4)
  31.                     arr(r, 7) = ssr(5): arr(r, 8) = ssr(33): arr(r, 9) = ssr(34): arr(r, 10) = ssr(47)
  32.                     arr(r, 11) = ssr(48): arr(r, 12) = ssr(38): arr(r, 13) = ssr(43): arr(r, 14) = ssr(6)
  33.                     arr(r, 15) = ssr(39): arr(r, 16) = ssr(44): arr(r, 17) = ssr(45): arr(r, 18) = ssr(46)
  34.                     arr(r, 4) = ssr(31)
  35.                     
  36.                     If arr(r, 4) > 0 Then
  37.                         With Range("d" & r & ":e" & r).Font
  38.                             .Color = vbRed
  39.                             .Bold = True
  40.                         End With
  41.                     Else
  42.                        With Range("d" & r & ":e" & r).Font
  43.                             .Color = vbGreen
  44.                             .Bold = True
  45.                         End With
  46.                     End If
  47.                 End If
  48.             End With
  49.         Next
  50.         .Range("a1").Resize(UBound(arr), UBound(arr, 2)) = arr
  51.     End With
  52.     Application.ScreenUpdating = True
  53.     MsgBox "又赚了一个亿呀,仅耗时:" & Format(Timer - t, "0.00秒"), 64, "WatchMen温馨提示:"
  54. End Sub
复制代码


Stock 0.1.zip

40.89 KB, 下载次数: 174

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-9-24 19:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
运行时提示“下标越界”是什么意思啊?

TA的精华主题

TA的得分主题

发表于 2019-9-24 20:02 | 显示全部楼层
本帖最后由 我在天外 于 2019-9-24 20:12 编辑

循环使用msxml2.xmlhttp去请求,满在这块了。感觉用vb做异步多线程去实现,有点太过折腾了。

看到以前有人发过帖:http://club.excelhome.net/forum.php?mod=viewthread&tid=1397922

TA的精华主题

TA的得分主题

发表于 2019-9-24 20:51 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-9-25 08:39 | 显示全部楼层
我在天外 发表于 2019-9-24 20:51
https:杠杆wolfccb.com/?p=647
参考下吧

非常感谢,哈哈哈

TA的精华主题

TA的得分主题

发表于 2019-12-26 08:34 | 显示全部楼层
本帖最后由 千金易得 于 2019-12-28 09:12 编辑
WatchChen 发表于 2019-9-25 08:39
非常感谢,哈哈哈
又赚了一个亿呀,结束语误导大家70%的股民再赔钱!这个你就是自我陶醉看看这是证券账户用股票软件全都有很专业的!
无标题.jpg

TA的精华主题

TA的得分主题

发表于 2020-8-15 08:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
感谢大神 期待更新 级别不够 么PM

TA的精华主题

TA的得分主题

发表于 2020-8-15 08:53 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-8-15 22:31 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-24 13:49 , Processed in 0.046352 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表