ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 名课 - Power BI数据分析与可视化实战 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: jinsha2002

[已解决] 请教老师 东方财富网 股票数据 怎么下

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-8-19 18:17 | 显示全部楼层
搞了二天了,还没成
请路过的朋友,帮忙顶一下



TA的精华主题

TA的得分主题

 楼主| 发表于 2013-8-19 19:14 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 jinsha2002 于 2013-8-19 19:22 编辑
  1.        '  http://data.eastmoney.com/stockcomment/data.aspx?type=Ranking&market=all&sortType=first&sortRule=0&jsname=isqOvgyl&pageSize=3000&page=1
复制代码

  
东方财富网 千股千评

统于找到

请路过的朋友,编下VBA

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-8-19 19:24 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
先吃饭,等下再来

TA的精华主题

TA的得分主题

发表于 2013-8-19 21:22 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
不知什么原因  用下面的代码 把数据粗取下来后  有好多乱码  不知是什么原因,求解

Sub ccc()
Dim str$
With CreateObject("Microsoft.XMLHTTP")
   .Open "GET", "http://data.eastmoney.com/stockcomment/", False
   .send
   str = Split(Split(.responsetext, "data:[")(1), "<div id=""footer"">")(0)
End With
Range("b:c").ClearContents
Range("b2") = str
End Sub

TA的精华主题

TA的得分主题

发表于 2013-8-19 21:53 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
修修改改而成。
  1. Private Sub CommandButton1_Click()
  2.     On Error Resume Next
  3.     With CreateObject("WinHttp.WinHttpRequest.5.1")

  4.         .Open "GET", "http://data.eastmoney.com/stockcomment/data.aspx?type=Ranking&market=all&sortType=first&sortRule=0&jsname=isqOvgyl&pageSize=3000&page=1", False
  5.         
  6.         
  7.         .send
  8.         tt = .responseText




  9.         With CreateObject("MSScriptControl.ScriptControl")
  10.             .Language = "Jscript"
  11.             .AddCode tt
  12.             For i = 0 To .Eval("isqOvgyl.count") - 1
  13.                 Range(Cells(i + 2, 1), Cells(i + 2, 10)) = Split(.Eval("isqOvgyl.data[" & i & "]"), ",")
  14.             Next i
  15.         End With
  16.     End With
  17. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-8-21 07:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢 suwenkai 老师在14楼指点

With CreateObject("MSScriptControl.ScriptControl")
            .Language = "Jscript"
            .AddCode tt
            For i = 0 To .Eval("isqOvgyl.count") - 1
                Range(Cells(i + 2, 1), Cells(i + 2, 10)) = Split(.Eval("isqOvgyl.data[" & i & "]"), ",")
            Next i
        End With

这段代码 我还要消化消化

TA的精华主题

TA的得分主题

发表于 2013-8-21 08:12 | 显示全部楼层
这个网站采用json格式传递数据,你要采集的网址为:
http://data.eastmoney.com/stockcomment/data.aspx?type=Ranking&market={market}&sortType={sortType}&sortRule={sortRule}&jsname={jsname}&pageSize={pageSize}&page={page}


相关参数大体如下:
1. type:Ranking


2. market:对应的是li 标签中的cate属性,分别为:
    all 全部股票                            sha 沪市A股     sza 深市A股     cyb 创业板     zxb 中小板     shb 沪市B股     szb 深市B股


3.sortType:排序的字段名,对应的是Th 标签中的sort属性,分别为:    gpdm   代码
    spj   收盘价
    zdf    涨跌幅
    hsl    换手率
    syl   市盈率
    zlcb   主力成本
    jgcyd    机构参与度

4. sortRule:升序还是降序,1升序,-1降序


5. jsname:对应的是json返回时,所有数据对应的变量名,你可以自己随便输入,输入啥,返回的变量就叫啥,如你输入ABC,返回的json的头几个就是:var ABC ={data

6. pageSize:每页显示多少条记录,你可以随便输入,如果输入的够大,所有数据可以一次性返回



7. page:当前显示第几页


例子:
返回 全部股票 以代码升序排列 返回的变量叫QBGP  每页100000条,显示第一页
http://data.eastmoney.com/stockcomment/data.aspx?type=Ranking&market=all&sortType=gpdm&sortRule=1&jsname=QBGP&pageSize=100000&page=1




鉴于以上分析,建议采用xmlhttp获取数据!!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-8-21 08:33 | 显示全部楼层
本帖最后由 jinsha2002 于 2013-8-21 08:39 编辑

lsdongjh 老师 对东方财富网 http://data.eastmoney.com/stockcomment/网址构成

解释得十分到位  

顺便问一下,17楼第2到3行的长网址,如何贴上的?

                     我贴上的总是 链接地址

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-10-13 09:43 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 jinsha2002 于 2013-10-13 10:02 编辑


lsdongjh老师在17楼提到 json格式,不是很了解,找些资料补课

http://blog.csdn.net/eroswang/article/details/4643680




一、JSON定义
       JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。它基于ECMA262语言规范(1999-12第三版)中JavaScript编程语言的一个子集。 JSON采用与编程语言无关的文本格式,但是也使用了类C语言(包括C, C++, C#, Java, JavaScript, Perl, Python等)的习惯,这些特性使JSON成为理想的数据交换格式。
JSON的结构基于下面两点
      1. "名称/值"对的集合 不同语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),键列表(keyed list)等
       2. 值的有序列表 多数语言中被理解为数组(array)

二、JSON使用:
      JSON以一种特定的字符串形式来表示 JavaScript 对象。如果将具有这样一种形式的字符串赋给任意一个 JavaScript 变量,那么该变量会变成一个对象引用,而这个对象就是字符串所构建出来的,好像有点拗口,我们还是用实例来说明。
这里假设我们需要创建一个User对象,并具有以下属性
         用户ID
         用户名
         用户Email
您可以使用以下JSON形式来表示User对象:
{"UserID":11, "Name":"Truly", "Email":"zhuleipro◎hotmail.com"};
然后如果把这一字符串赋予一个JavaScript变量,那么就可以直接使用对象的任一属性了。
完整代码:
<script>
var User = {"UserID":11, "Name":"Truly", "Email":"zhuleipro◎hotmail.com"};
alert(User.Name);
</script>
实际使用时可能更复杂一点,比如我们为Name定义更详细的结构,使它具有FirstName和LastName:
{"UserID":11, "Name":{"FirstName":"Truly","LastName":"Zhu"}, "Email":"zhuleipro◎hotmail.com"}
完整代码:
<script>
var User = {"UserID":11, "Name":{"FirstName":"Truly","LastName":"Zhu"}, "Email":"zhuleipro◎hotmail.com"};
alert(User.Name.FirstName);
</script>
现在我们增加一个新的需求,我们某个页面需要一个用户列表,而不仅仅是一个单一的用户信息,那么这里就需要创建一个用户列表数组。
下面代码演示了使用JSON形式定义这个用户列表:
[
{"UserID":11, "Name":{"FirstName":"Truly","LastName":"Zhu"}, "Email":"zhuleipro◎hotmail.com"},
{"UserID":12, "Name":{"FirstName":"Jeffrey","LastName":"Richter"}, "Email":"xxx◎xxx.com"},
{"UserID":13, "Name":{"FirstName":"Scott","LastName":"Gu"}, "Email":"xxx2◎xxx2.com"}
]

完整代码:
<script>
var UserList = [
{"UserID":11, "Name":{"FirstName":"Truly","LastName":"Zhu"}, "Email":"zhuleipro◎hotmail.com"},
{"UserID":12, "Name":{"FirstName":"Jeffrey","LastName":"Richter"}, "Email":"xxx◎xxx.com"},
{"UserID":13, "Name":{"FirstName":"Scott","LastName":"Gu"}, "Email":"xxx2◎xxx2.com"}
];
alert(UserList[0].Name.FirstName);
</script>
事实上除了使用"."引用属性外,我们还可以使用下面语句:
alert(UserList[0]["Name"]["FirstName"]); 或者 alert(UserList[0].Name["FirstName"]);

       现在读者应该对JSON的使用有点认识了,归纳为以下几点:
       对象是属性、值对的集合。一个对象的开始于“{”,结束于“}”。每一个属性名和值间用“:”提示,属性间用“,”分隔。
       数组是有顺序的值的集合。一个数组开始于"[",结束于"]",值之间用","分隔。
      值可以是引号里的字符串、数字、true、false、null,也可以是对象或数组。这些结构都能嵌套。
      字符串和数字的定义和C或Java基本一致。

三、小节:

本文通过一个实例演示,初步了解了JSON 的强大用途。可以归结如下:
JSON 提供了一种优秀的面向对象的方法,以便将元数据缓存到客户机上。
JSON 帮助分离了验证数据和逻辑。
JSON 帮助为 Web 应用程序提供了 Ajax 的本质。
参考资料:
http://www.json.org/

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-10-13 10:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
liucqa老师 在 使用VBA获取JSON格式的网页数据 例举二个例子
编号 939854

Option Explicit
Public Const strJOSN As String = "{ ""myname"":""liucqa"", ""myid"":""007"" }"
Sub test1()
    Dim objSC, strJSON, objJS
    Set objSC = CreateObject("MSScriptControl.ScriptControl")    '调用ScriptControl对象将提取的变量文本运算形成对象集合
    strJSON = "var o=" & strJOSN & ";"
    objSC.Language = "javascript"
    objSC.AddCode (strJSON)
    Set objJS = objSC.CodeObject.o
    MsgBox CallByName(objJS, "myname", VbGet) & "=" & CallByName(objJS, "myid", VbGet)
End Sub

Sub test2()
    Dim strFunc, objSC, objJSON
    Set objSC = CreateObject("ScriptControl")
    objSC.Language = "JScript"
    strFunc = "function getjson(s) { return eval('(' + s + ')'); }"
    objSC.AddCode strFunc
    Set objJSON = objSC.CodeObject.getjson(strJOSN)
    MsgBox objJSON.myname & "=" & objJSON.myid
End Sub
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-12-23 11:17 , Processed in 0.024698 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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