ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求助抓取新浪行情

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-9-15 21:48 | 显示全部楼层 |阅读模式
求助大师,行情中心_新浪财经_新浪网  http://vip.stock.finance.sina.com.cn/mkt/#hsgs_shfxjs这个网址的数据抓取到excel里的代码如何写,谢谢

TA的精华主题

TA的得分主题

发表于 2016-9-16 10:11 | 显示全部楼层
用好啦,记得赏花啊!
  1. Sub Main2()
  2.     Dim strText As String
  3. '   For i = 1 To 36
  4.         strText = HtmlStr("http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQNodeData?page=1&num=80&sort=symbol&asc=1&node=shfxjs&symbol=&_s_r_a=setlen") & "},"
  5. '    Next
  6.     'strText = strConv1(strText)
  7.     Set reg = CreateObject("vbscript.regexp") 'ÕýÔò:"
  8.     reg.Global = True
  9.     reg.Pattern = "[a-z"":]"
  10.     strText = reg.Replace(strText, "")
  11.    
  12.     strText = Replace(strText, ",,", ",")
  13.     strText = Replace(strText, ",1,", "")
  14. 'Debug.Print strText
  15.     Cells.ClearContents
  16.     Dim arr() As String
  17.     arr = Split(strText, "},")
  18.     Range("b2:b" & (UBound(arr) + 2)) = Application.Transpose(arr)
  19.    
  20.     Columns("B:B").TextToColumns Destination:=Range("B1"), Comma:=True, FieldInfo:=Array(Array(1, 1), Array(2, 9))

  21.     [a2] = 1: [a3] = 2: [a2:a3].AutoFill Range("a2:a" & UBound(arr) + 1)

  22. '    Rows(1).Insert
  23. Range([a1], Cells(1, "t")) = Split("ÐòºÅ ´úÂë Ãû³Æ ×îÐÂ¼Û Õǵø¶î Õǵø·ù ÂòÈë Âô³ö ×òÊÕ ½ñ¿ª ×î¸ß ×îµÍ ³É½»Á¿/ÊÖ ³É½»¶î/Íò   Êо» ×ÜÊÐÖµ Á÷ͨÊÐÖµ »»ÊÖ")
  24. End Sub

  25. Function HtmlStr(url As String) As String
  26.     Dim xmlHttp
  27.     Set xmlHttp = CreateObject("Microsoft.XMLHTTP")
  28.     xmlHttp.Open "GET", url, False
  29.     xmlHttp.send
  30.     If xmlHttp.ReadyState = 4 Then
  31.         url = StrConv(xmlHttp.responseBody, vbUnicode)
  32.     Else
  33.         HtmlStr = ""
  34.         Exit Function
  35.     End If
  36.     Set xmlHttp = Nothing
  37.    
  38.     Dim i1 As Long, i2 As Long
  39.     i1 = InStr(1, url, "[")
  40.     i2 = InStr(i1, url, "]")
  41.     url = Mid(url, i1 + 1, i2 - i1 - 2)
  42.     url = Replace(url, """:", ",")
  43.     url = Replace(url, """", "")
  44.     url = Replace(url, "{", "")
  45.     HtmlStr = url
  46. End Function
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-9-16 15:18 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
YZC51 发表于 2016-9-16 10:11
用好啦,记得赏花啊!

谢谢!基本是这样,我自己消化一下,有问题再请教,节日快乐!

TA的精华主题

TA的得分主题

发表于 2016-9-16 15:28 | 显示全部楼层
五指山888 发表于 2016-9-16 15:18
谢谢!基本是这样,我自己消化一下,有问题再请教,节日快乐!

节日快乐!!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-9-16 16:50 | 显示全部楼层
YZC51 发表于 2016-9-16 15:28
节日快乐!!!

表头看不懂,我有两列猜不出是啥数据,其他几列都知道了,老师能看一下吗?

新建 Microsoft Excel 工作表 (2).rar

19.12 KB, 下载次数: 76

TA的精华主题

TA的得分主题

发表于 2016-9-17 00:15 | 显示全部楼层
将25行替换为下面的代码
Range([a1], Cells(1, "t")) = Split("序号 代码 名称 最新价 涨跌额 涨跌幅 买入 卖出 昨收 今开 最高 最低 成交量/手 成交额/万 更新时间 本益比 平均市净率 市值 流通市值 换手率")

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-9-17 00:35 | 显示全部楼层
YZC51 发表于 2016-9-17 00:15
将25行替换为下面的代码
Range([a1], Cells(1, "t")) = Split("序号 代码 名称 最新价 涨跌额 涨跌幅 买入 ...

谢谢!这么晚了,还在工作,再次感谢老师的帮助!

TA的精华主题

TA的得分主题

发表于 2016-9-17 00:48 | 显示全部楼层
这样更准确些
[a1:t1] = Split("序号 代码 名称 最新价 涨跌额 涨跌幅 买入 卖出 昨收 今开 最高 最低 成交量/手 成交额/万 更新时间 市盈率 市净率 总市值 流通市值 换手率")

TA的精华主题

TA的得分主题

发表于 2016-9-17 00:59 | 显示全部楼层
在最后加一句
    [O:O].NumberFormatLocal = "00"":""00"":""00"

TA的精华主题

TA的得分主题

发表于 2016-9-17 01:07 | 显示全部楼层
最终代码
  1. Sub 行情下载()
  2.     Sheets("Sheet1").Select
  3.     Cells.ClearContents
  4.     strText = HtmlStr("http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQNodeData?page=1&num=80&sort=symbol&asc=1&node=shfxjs&symbol=&_s_r_a=setlen") & "},"
  5.     Set reg = CreateObject("vbscript.regexp")
  6.     reg.Global = True
  7.     reg.Pattern = "[a-z"":]"
  8.     strText = reg.Replace(strText, "")
  9.     strText = Replace(strText, ",,", ",")
  10.     strText = Replace(strText, ",1,", "")
  11.     Cells.ClearContents
  12.     Dim arr() As String
  13.     arr = Split(strText, "},")
  14.     Range("b2:b" & (UBound(arr) + 2)) = Application.Transpose(arr)
  15.     Columns("B:B").TextToColumns Destination:=Range("B1"), Comma:=True, FieldInfo:=Array(Array(1, 1), Array(2, 9))
  16.     [a2] = 1: [a3] = 2: [a2:a3].AutoFill Range("a2:a" & UBound(arr) + 1)
  17.     [a1:t1] = Split("序号 代码 名称 最新价 涨跌额 涨跌幅 买入 卖出 昨收 今开 最高 最低 成交量/手 成交额/万 更新时间 市盈率 市净率 总市值 流通市值 换手率")
  18.     [O:O].NumberFormatLocal = "00"":""00"":""00"
  19.     Range("W1").Select
  20. End Sub
复制代码

评分

2

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-20 20:36 , Processed in 0.038171 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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