Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: staynam

[已解决](未解决,求管理别再改主题分类)(原来代码已失效,再求助)从网页提取数据不成功,跪求

[复制链接]
 楼主| 发表于 2017-6-4 22:09 | 显示全部楼层
本帖最后由 staynam 于 2017-6-4 22:22 编辑
雪舞子 发表于 2017-6-4 20:47
数据已全部抓取出来,只要对着一下网页标题添加一下即可。

诶诶诶诶?
额提取啥数据?
我觉得。。后来向您请教的内容应该是用变量改 sd 的
您贴图这个我倒是知道怎么弄,1yzf,3yzf啥的就可以了。后面那个需要改sd和其他种类不一样,无法通过这个实现。

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

发表于 2017-6-5 07:55 | 显示全部楼层
staynam 发表于 2017-6-4 22:09
诶诶诶诶?
额提取啥数据?
我觉得。。后来向您请教的内容应该是用变量改 sd 的

抓取到的数据跟网站是同步的,已经是全部数据了,甚至比网站显示的还要全面,不知你要的 “那请问大大,如果改成6个月之的要如何改动?非常感谢”与网站的“近6月”有啥区别。

网址上的“ed”为目前日期,“sd”为过去一年日期,这个可以自定义。

另外在网址上还有一个“sc=1yzf”参数,可以更改为“3yzf”、“6yzf”试试。



回复

使用道具 举报

 楼主| 发表于 2017-6-5 08:59 | 显示全部楼层
雪舞子 发表于 2017-6-5 07:55
抓取到的数据跟网站是同步的,已经是全部数据了,甚至比网站显示的还要全面,不知你要的 “那请问大大, ...

非常抱歉,可能没有表达清楚,最开始问的问题之前已解决了,我自己也是通过sc=1yzf 3yzf之类的实现了1,3,6,12,24个月的倒序排名

我上面问您的改sd是另一个结构有点不同的
fund.eastmoney.com/data/diyfundranking.html#tetf;c0;r;sqjzf;pn50;ddesc;qsd20160527;qed20170527;qdii

如下图,需要通过选择起始日期和结束日期,并且出来的数据也只有一个期间涨幅
etf.png

所以我才根据后来您给的以下代码(您说是一年),问您如果需要6个月的需要怎么改,这样知道1年和6个月2个代码以后我大概能推导出其他时间
  1. sd = Format(Date, "yyyy-mm-dd")
  2. ed = sd: Mid(sd, 1, 4) = Left(sd, 4) - 1
复制代码







回复

使用道具 举报

发表于 2017-6-5 12:49 | 显示全部楼层
staynam 发表于 2017-6-5 08:59
非常抱歉,可能没有表达清楚,最开始问的问题之前已解决了,我自己也是通过sc=1yzf 3yzf之类的实现了1,3, ...

你这是自定义时间段数据排行,不只是时间参数不同,其他参数也是有区别的。

url更改如下:http://fund.eastmoney.com/data/r ... 017-06-05&pn=50

以上自定义排行网址起始 2017-1-5 至 2017-6-5 近半年数据,

其余需要什么时间段的可以参照前面代码更改 sd 以及 ed 值。



回复

使用道具 举报

 楼主| 发表于 2017-6-5 19:03 | 显示全部楼层
雪舞子 发表于 2017-6-5 12:49
你这是自定义时间段数据排行,不只是时间参数不同,其他参数也是有区别的。

url更改如下:http://fund ...

大大,您那个抓取的网址我在5楼也是有给出的。

我的需求是
  1. sd = Format(Date, "yyyy-mm-dd")
  2. ed = sd: Mid(sd, 1, 4) = Left(sd, 4) - 1
复制代码

您给的上面这段代码是从电脑时间往前一年的,那么请问6个月的代码是怎样的?
有了1年和6个月的代码我应该就能自己推到出其他时间的了,非常感谢您。
回复

使用道具 举报

发表于 2017-6-5 21:41 | 显示全部楼层
staynam 发表于 2017-6-5 19:03
大大,您那个抓取的网址我在5楼也是有给出的。

我的需求是

才搞清楚你要的是什么
时间间隔通常用 DateAdd() 函数。
  1. ed = Date
  2. sd = DateAdd("m", -6, Date) '系统时间往前推6个月
  3. '第一个参数还可用"yyyy"年、"m"月、"d"日、"q"季、"ww"周、"h"时、"n"分、"s"秒
  4. '第二个参数正数代表未来,负数代表过去
  5. '第三个参数为基准时间
复制代码
我那种推年的方法是一种取巧的写法。
回复

使用道具 举报

 楼主| 发表于 2017-6-6 16:08 | 显示全部楼层
本帖最后由 staynam 于 2017-6-6 16:21 编辑
雪舞子 发表于 2017-6-5 21:41
才搞清楚你要的是什么
时间间隔通常用 DateAdd() 函数。
我那种推年的方法是一种取巧的写法。

万分感谢!
我试一下

更新,我按照您最开始的代码和后来给的综合了一下,但是好像有问题
  1. Sub test_XWZ()
  2.     Dim url$, strJSON$, objJson, rData
  3.     Dim sd$, ed$, ar, brr(1000, 30), i%, j%
  4.     ed = Date
  5.     sd = DateAdd("m", -6, Date)
  6.     url = "fund.eastmoney.com/data/rankhandler.aspx?op=dy&dt=kf&ft=etf&rs=&gs=0&sc=qjzf&st=desc&sd=" & sd & "&ed=" & ed & "&es=0&qdii=&pi=1&pn=50&dx=0"
  7.     With CreateObject("msxml2.xmlhttp")
  8.         .Open "GET", url, False
  9.         .send
  10.         strJSON = .responsetext
  11.     End With
  12.     With CreateObject("msscriptcontrol.scriptcontrol")
  13.         .Language = "JavaScript"
  14.         .AddCode strJSON
  15.         Set objJson = .CodeObject
  16.     End With
  17.     For Each rData In objJson.rankData.datas
  18.         i = i + 1
  19.         ar = Split(rData, ",")
  20.         For j = 0 To UBound(ar)
  21.             brr(i, j) = ar(j)
  22.         Next
  23.     Next
  24.     Cells.Clear
  25.     Cells.Font.Size = 9
  26.     [a:a].NumberFormatLocal = "@"
  27.     [a1].Resize(i, UBound(ar)) = brr
  28.     MsgBox "抓取完毕!"
  29. End Sub
复制代码


code.png
点击调试,自动跳转的是这一行   .Open "GET", url, False
回复

使用道具 举报

发表于 2017-6-6 16:43 | 显示全部楼层
staynam 发表于 2017-6-6 16:08
万分感谢!
我试一下



换成14楼的url
回复

使用道具 举报

 楼主| 发表于 2017-6-6 21:37 | 显示全部楼层

您好,用了14楼的还是错误呢
求大佬指教

fund.eastmoney.com/data/rankhandler.aspx?op=dy&dt=kf&ft=all&rs=&gs=0&sc=qjzf&st=desc&sd=" & sd & "&ed=" & ed & "&pn=50
回复

使用道具 举报

发表于 2017-6-7 12:50 | 显示全部楼层
staynam 发表于 2017-6-6 21:37
您好,用了14楼的还是错误呢
求大佬指教

你把网址最重要部分丢掉了,不错都难。
在14楼网址上点右键,复制链接地址,
然后代入 “sd”、“ed”值即可。



































回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-30 00:02 , Processed in 0.363450 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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