ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] 东方财富网天天练

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2015-3-9 16:31 | 显示全部楼层 |阅读模式
本帖最后由 onlycxb 于 2015-3-10 13:40 编辑

1.东方财富_开发式基金净值

  1. Sub 东方财富_开发式基金净值()
  2.     Dim js As Object, arr, db
  3.     Set js = CreateObject("scriptcontrol")
  4.     js.Language = "jscript"
  5.     With CreateObject("msxml2.xmlhttp")
  6.         .Open "GET", "http://fund.eastmoney.com/Data/Fund_JJJZ_Data.aspx?t=1&lx=1&letter=&gsid=&text=&sort=zdf,desc&page=1,9999&dt=1425889193593&atfc=&onlySale=0", False
  7.         .send
  8.         js.addcode .ResponseText
  9.     End With
  10.     For Each db In js.eval("db.datas")
  11.         Debug.Print db                                                         '这里输出数据
  12.     Next db
  13. End Sub
复制代码




补充内容 (2015-6-3 08:24):
以上为示例代码,请自行完善。

评分

4

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-3-9 17:04 | 显示全部楼层
2.东方财富_货币型基金每日收益一览表
  1. Sub 东方财富_货币型基金每日收益一览表()
  2.     Dim html As Object, arr, db, Tr, Td, i, j
  3.     Dim arrData(1 To 10000, 1 To 11)
  4.     Set html = CreateObject("htmlfile")
  5.     With CreateObject("msxml2.xmlhttp")
  6.         .Open "GET", "http://fund.eastmoney.com/HBJJ_dwsy.html", False
  7.         .send
  8.         html.write StrConv(.Responsebody, vbUnicode)
  9.     End With
  10.     Set db = html.all.tags("table")("oTable")
  11.     Cells.Clear
  12.     For Each Tr In db.Rows
  13.         i = i + 1
  14.         j = 0
  15.         For Each Td In Tr.Cells
  16.             j = j + 1
  17.             If i > 2 And j > 2 Then arrData(i - 2, j - 2) = Td.innerText                  '从第三行,第三列开始取数据
  18.         Next
  19.     Next
  20.     ActiveSheet.[a1].Resize(i - 3, j - 2) = arrData
  21. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-3-9 17:09 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Sub 东方财富_货币型基金每日收益一览表2()
  2.     Dim html As Object, arr, db, Tr, Td, i, j
  3.     Dim arrData(1 To 10000, 1 To 11)
  4.     Set html = CreateObject("htmlfile")
  5.     With CreateObject("msxml2.xmlhttp")
  6.         .Open "GET", "http://fund.eastmoney.com/HBJJ_dwsy.html", False
  7.         .send
  8.         html.write StrConv(.Responsebody, vbUnicode)
  9.     End With
  10.     Set db = html.all.tags("table")("oTable")
  11.     Cells.Clear


  12.     For i = 3 To db.Rows.Length - 1
  13.       Set Row = db.Rows(i)
  14.       For j = 3 To Row.Cells.Length - 1
  15.           Cells(i - 2, j - 2) = Row.Cells(j).innerText
  16.       Next
  17.     Next
  18. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-3-9 18:38 | 显示全部楼层
3.分级基金净值表(方法同开发式基金)
  1. Sub 分级基金净值()
  2.     Dim js As Object, arr, db, Url$
  3.     Url = "http://fund.eastmoney.com/Data/Fund_JJJZ_Data.aspx?t=1&lx=9&letter=&gsid=0&text=&sort=zdf,desc&page=1,10000000&dt=1425897162484&atfc= "
  4.     Set js = CreateObject("scriptcontrol")
  5.     js.Language = "jscript"
  6.     With CreateObject("msxml2.xmlhttp")
  7.         .Open "GET", Url, False
  8.         .send
  9.         js.addcode .ResponseText
  10.     End With
  11.     For Each db In js.eval("db.datas")
  12.         Debug.Print db                                                         '这里输出数据
  13.     Next db
  14. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-3-9 18:44 | 显示全部楼层
4.开发基金排名(方法同1、3)
  1. Sub 开发基金排名()
  2.     Dim js As Object, db, Url$
  3.     Url = "http://fund.eastmoney.com/data/rankhandler.aspx?op=ph&dt=kf&ft=all&rs=&gs=0&sc=zzf&st=desc&sd=2014-03-09&ed=2015-03-09&qdii=&pi=1&pn=10000&dx=1&v=0.8996843082575179"
  4.     Set js = CreateObject("scriptcontrol")
  5.     js.Language = "jscript"
  6.     With CreateObject("msxml2.xmlhttp")
  7.         .Open "GET", Url, False
  8.         .send
  9.         js.addcode .ResponseText
  10.     End With
  11.     For Each db In js.eval("rankData.datas")
  12.         Debug.Print db                                                         '这里输出数据
  13.     Next db
  14. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-3-9 19:15 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
5.新股申购与中签查询
  1. Sub main()
  2.     Dim js As Object, arr, Db
  3.     Dim i%, j%, Total%
  4.     Set js = CreateObject("scriptcontrol")
  5.     js.Language = "jscript"
  6.     With CreateObject("msxml2.xmlhttp")
  7.         .Open "GET", "http://datainterface.eastmoney.com/EM_DataCenter/JS.aspx?type=NS&sty=NSST&st=12&sr=-1&p=1&ps=1&js=(pc),(x)&stat=1&rt=" & Rnd(), False
  8.         .send
  9.         Total = Split(.responsetext, ",")(0)
  10.         .Open "GET", "http://datainterface.eastmoney.com/EM_DataCenter/JS.aspx?type=NS&sty=NSST&st=12&sr=-1&p=1&ps=" & Total & "&js=var%20rxSJdnPK={pages:(pc),data:[(x)]}&stat=1&rt=" & Rnd, False
  11.         .send
  12.         js.addcode .responsetext
  13.     End With
  14.     ReDim arr(1 To Total, 1 To 26)
  15.     i = 0
  16.     For Each Db In js.eval("rxSJdnPK.data")
  17.         i = i + 1
  18.         For j = 1 To 26
  19.             arr(i, j) = Split(Db, ",")(j - 1)
  20.         Next j
  21.     Next Db
  22.     Cells.Clear
  23.     [a1].Resize(Total, 26) = arr
  24. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-3-10 07:46 | 显示全部楼层
6.外汇行情
  1. Sub t6()
  2.     Dim html As Object, arrdata(1 To 100000, 1 To 8), Db, Url$
  3.     Dim i%, j%, tr, td
  4.     Url = "http://quote.eastmoney.com/center/forexlist.html"
  5.     Set html = CreateObject("htmlfile")
  6.     With CreateObject("msxml2.xmlhttp")
  7.         .Open "GET", Url, False
  8.         .send
  9.         html.body.innerhtml = StrConv(.ResponseBody, vbUnicode, &H804)
  10.     End With
  11.     Set Db = html.all.tags("table")
  12.     For i = 0 To Db.Length - 1
  13.         If Db(i).classname = "data-table" Then
  14.             For Each tr In Db(i).Rows
  15.                 i = i + 1
  16.                 j = 0
  17.                 For Each td In tr.Cells
  18.                     j = j + 1
  19.                     arrdata(i, j) = td.innertext
  20.                 Next td
  21.             Next tr
  22.         End If
  23.     Next
  24.     Cells.Clear
  25.     [a1].Resize(i, UBound(arrdata, 2)) = arrdata
  26. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2015-3-10 13:29 | 显示全部楼层
请教大神,东方财富网的业绩数据是否已经加密而不能用xmlhttp方法提取?
前几天以下代码还能运行,现在却总是在j=51的位置报错,禁止访问!
            For j = 1 To 55
        r = 1
restart2:
                With CreateObject("Msxml2.ServerXMLHTTP")
                    .Open "GET", "http://data.eastmoney.com/bbsj/201412/yjbb/ggrq/desc/“ & j & ".html", False  
                    .send
                    Do Until .readyState = 4
                         DoEvents
                    Loop
                    If .Status <> 200 Then
                        If r <10 Then
                             r = r + 1
                             GoTo restart2
                        Else
                              MsgBox "无法打开东方财富网数据中心指定网页" & vbCrLf & vbCrLf & "http://data.eastmoney.com/bbsj/" & C1 & C3 & j & ".html" & vbCrLf & vbCrLf & "Http状态:" & .Status
                              End
                        End If
                    End If
                   ‘Str_D = StrConv(.responseBody, vbUnicode)
                End With
                ‘str1 = InStr(Str_D, "<tbody>")
                ’str2 = InStr(str1, Str_D, "</tbody>")
                ‘strM = strM & Mid(Str_D, str1 + 7, str2 - str1 - 7)
            Next

下面是http头信息
(Request-Line)        GET /bbsj/201409/yjbb/ggrq/desc/2.html HTTP/1.1
Host        data.eastmoney.com
User-Agent        Mozilla/5.0 (Windows NT 6.1; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0
Accept        text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language        zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding        gzip, deflate
Referer        http://data.eastmoney.com/bbsj/201409/yjbb.html
Cookie        emstat_bc_emcount=1036748195792377156; emstat_ss_emcount=30_1425992997_54967698; pgv_pvi=3715790260; HAList=a-sh-601198-%u4E1C%u5174%u8BC1%u5238%2Ca-sz-300333-%u5146%u65E5%u79D1%u6280%2Ca-sz-000016-%u6DF1%u5EB7%u4F73A%2Ca-sh-600004-%u767D%u4E91%u673A%u573A; em_hq_fls=old; pgv_info=ssi=s8031867592; ASP.NET_SessionId=4q0lsi55erddclfuszzdlc45
Connection        keep-alive

貌似有了防盗链?
查到http://club.excelhome.net/thread-899268-1-1.html

可惜不会用,恳请大神示范,多谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-3-10 13:35 | 显示全部楼层
7.东方财富网 > 数据中心 > 年报季报 > 业绩报表
  1. Sub t()
  2.     Dim html, db, i%, j%, k%, rowx, TD, TR, arrdata(1 To 10000, 1 To 18)
  3.     Set html = CreateObject("htmlfile")
  4.     With CreateObject("msxml2.xmlhttp")
  5.         .Open "GET", "http://data.eastmoney.com/bbsj/201412/yjbb/ggrq/desc/1.html", False  '以取第1页数据为例
  6.         .send
  7.         html.body.innerhtml = .responsetext
  8.     End With

  9.     Set db = html.all.tags("table")
  10.     For i = 0 To db.Length - 1
  11.         If db(i).classname = "tab1" Then
  12.             Set rowx = db(i).Rows
  13.             For Each TR In rowx
  14.                 j = j + 1
  15.                 k = 0
  16.                 For Each TD In TR.Cells
  17.                      k = k + 1
  18.                 If j > 2 Then arrdata(j - 2, k) = TD.innertext
  19.                 Next TD
  20.             Next TR
  21.         End If
  22.     Next i
  23.     Cells.Clear
  24.     [a1].Resize(j - 2, 18) = arrdata
  25. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-3-10 15:29 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
mckawayi 发表于 2015-3-10 13:29
请教大神,东方财富网的业绩数据是否已经加密而不能用xmlhttp方法提取?
前几天以下代码还能运行,现在却总 ...

见9楼,我只取了一页
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-26 19:27 , Processed in 0.041559 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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