[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 【已解决】批处理把网页表格数据 下载到本地excel文件 新

本帖最后由 uuu888s 于 2015-3-10 19:53 编辑

现在要把这个网页http://data.eastmoney.com/soft/zlsj/xt.html  的表格数据下载到本地的excel xls文件里
并把最后一列 持仓明细 改成该股的总持股市值(亿元)  持股市值(亿元)的数据 可点击持仓明细链接 在该页面里有持股市值(亿元)这一列 要把该列数据求和 得到总的持股市值(亿元)

该表格数据链接http://data.eastmoney.com/aspx/data.aspx?name=RptOrganizationPositions&orgType=Intrust&reportDate=20141231&page=1&pageSize=550&sortType=2&sortRule=-1&jsname=DoSLVGvD&changeType=All%20

如600179持股市值 数据如下
http://data.eastmoney.com/aspx/data.aspx?name=jgcgdetail&orgType=Xintuo&reportDate=20141231&page=1&pageSize=50&sortType=2&sortRule=-1&jsname=pDPZhTqy&codes=60017901%20
不同的股票只要改codes  codes=股票代码+01或02  01还是02 可根据表格数据 最后一个数值 如"600179,黑化股份,7,2308.17,5.92,530.13,29.82,01"

这里有个类似思路的代码 供参考呀
不要哭让萤火虫带着你逃跑 乡间的歌谣永远的依靠

TOP

本帖最后由 apang 于 2015-3-10 21:31 编辑

test.vbs
  1. url = "http://data.eastmoney.com/aspx/data.aspx?name=RptOrganizationPositions&orgType=Intrust&reportDate=20141231&page=1&pageSize=550&sortType=2&sortRule=-1&jsname=DoSLVGvD&changeType=All%20"
  2. s = "股票代码,股票简称,持有信托家数,持股总数,占总股本比例,持股变动数值,持股变动比例,持仓明细,持仓市值变动值"
  3. txt = getText(url)
  4. txt = Replace(txt, """,""", vbLf)
  5. arr = Split(Split(txt, """")(1), vbLf)
  6. For i = 0 to UBound(arr)
  7.         a = Split(arr(i), ",")
  8.         url = "http://data.eastmoney.com/aspx/data.aspx?name=jgcgdetail&orgType=Xintuo&reportDate=20141231&page=1&pageSize=50&sortType=2&sortRule=-1&jsname=pDPZhTqy&codes=" & a(0) & a(7) & "%20"
  9.         a(7) = RegEx(getText(url))
  10.         ReDim Preserve a(8)
  11.         If a(5) <> "-" and a(7) <> "-" and a(3) <> "-" Then
  12.                 a(8) = FormatNumber(a(5) * a(7) / a(3), 2, true)
  13.         Else a(8) = "-"
  14.         End If
  15.         arr(i) = Join(a, ",")
  16. Next
  17. s = s & vbCrLf & Join(arr, vbCrLf)
  18. Set fso = CreateObject("Scripting.FileSystemObject")
  19. ''fso.OpenTextFile("1.csv", 2, true).Write s
  20. fso.OpenTextFile("1.xls", 2, true).Write Replace(s, ",", vbTab)
  21. MsgBox "OK"
  22. Function getText(ByVal url)
  23.         Set http = CreateObject ("Microsoft.XMLHTTP")
  24.         http.Open "GET", url, false
  25.         http.Send
  26.         getText = http.responseText
  27. End Function
  28. Function RegEx(txt)
  29.         Set re = New RegExp
  30.         re.Pattern = ",信托,[^,]*,([\d\.]+),"
  31.         re.Global = true
  32.         If Not re.Test(txt) Then RegEx = "-" : Exit Function
  33.         For Each m in re.Execute(txt)
  34.                 n = n + 0 + m.SubMatches(0)
  35.         Next
  36.         RegEx = n
  37. End Function
复制代码
1

评分人数

TOP

回复 3# apang

Apang
我想在xls文件里再加一列(持仓市值变动值)   该列的值为  持仓总市值*持股变动数值/持股总数  也就是你的表里的H(列)*F(列)/D(列) 谢谢了
不要哭让萤火虫带着你逃跑 乡间的歌谣永远的依靠

TOP

回复 4# uuu888s


    已修改

TOP

回复 5# apang


   
还有个问题 现在取的数据是2014-12-30 数据在100行以内 但是我现在要取2014-09-30 的数据 有800多条 运行结果是最后一列的数据只取到1/3左右 服务器就连接不上了 出现403拒绝访问  ( 可能频繁连接次数太多?? 禁止你的ip连接5分钟左右 ) 是否加个延时器什么的
不要哭让萤火虫带着你逃跑 乡间的歌谣永远的依靠

TOP

回复 6# uuu888s


    是有这个问题,在17、18行之间插入一行:
  1. WScript.Sleep 1000
复制代码
800条数据,每条数据延时1秒,那速度。。。相信你会有耐心

TOP

回复 7# apang


   等15分钟 真得有耐心啊  改成500 不知道服务器让不让
不要哭让萤火虫带着你逃跑 乡间的歌谣永远的依靠

TOP

本帖最后由 CrLf 于 2015-3-11 12:21 编辑

回复 7# apang


其实原网页中有现成代码,反正我就是抄过来的...
1

评分人数

    • apang: 嗯嗯,感谢提醒技术 + 1

TOP

返回列表