Board logo

标题: [文件操作] 【已解决】批处理如何下载网页中的多页表格到本地excel里? [打印本页]

作者: uuu888s    时间: 2015-3-4 12:40     标题: 【已解决】批处理如何下载网页中的多页表格到本地excel里?

本帖最后由 uuu888s 于 2015-3-5 11:29 编辑

现在想把http://data.eastmoney.com/zrz/dxzf.html 里的35页数据下载到本地excel里
试了下 excel---数据---导入外部数据---新建web查询    貌似第一页都不能完整导入
请教大牛有什么思路 可以一次性下载该数据(共35页)
感谢!
作者: uuu888s    时间: 2015-3-4 12:49

本帖最后由 uuu888s 于 2015-3-4 13:00 编辑

http://data.eastmoney.com/zrz/data.aspx?type=dx&style=zf&page=1&pageSize=1850&sortType=G&sortRule=-1&jsname=wKPapAYy&rt=47514817
貌似所有数据连接  如何把这些数据 还原到一个excel表里?
作者: pcl_test    时间: 2015-3-4 14:16

本帖最后由 pcl_test 于 2015-3-4 14:58 编辑

回复 2# uuu888s
1、浏览器打开http://data.eastmoney.com/zrz/da ... AYy&rt=47514817,并把所有的内容复制粘贴到1.txt里
2、打开1.txt,用记事本替换功能把 "," 替换成<br> ,把数据首尾不必要的字符删掉(这步也可用word打开1.txt,用word替换功能把 "," 替换成^p ,这样就可以忽略第三步)
3、把1.txt重命名为1.html,并用浏览器打开,把所有的内容复制粘贴到2.txt里
4、把2.txt重命名为2.csv,打开2.csv另存为xls表格即可
作者: uuu888s    时间: 2015-3-4 14:38

本帖最后由 uuu888s 于 2015-3-4 14:43 编辑

回复 3# pcl_test


  试了下 可行 但是这个数据经常要更新  每次都这样搞有点麻烦了 能否写个批处理   感谢~~
作者: uuu888s    时间: 2015-3-4 14:43

能否写个批处理   感谢~~
作者: Batcher    时间: 2015-3-4 17:25

回复 3# pcl_test


把网页文件转换为纯文本的命令行工具HtoX32c
http://bbs.bathome.net/thread-1974-1-1.html
作者: CrLf    时间: 2015-3-4 18:25

你要的 xls 在这里,保存为 test.hta 运行即可:
  1. <script src=http://data.eastmoney.com/zrz/data.aspx?type=dx&style=zf&page=1&pageSize=1850&sortType=G&sortRule=-1&jsname=wKPapAYy&rt=47514817></script>
  2. <script src=http://www.bathome.net/lib/xdate.js></script>
  3. <script>
  4. xls = ['股票代码\t股票简称\t相关链接\t发行方式\t发行总数(万股)\t发行价格\t最新价\t发行日期\t增发上市日期\t锁定期']
  5. var data = wKPapAYy.data
  6. for(var i=0;i<data.length;i++){
  7. var I = data[i].split(",");
  8. var z = I[0],
  9. y = I[1],
  10. r = (I[4] == "") ? "-" : I[4],
  11. l = (I[5] == "") ? "-" : I[5],
  12. a = (isNaN(I[7]) || I[7] == "") ? I[7] : parseFloat(I[7]).toFixed(2),
  13. j = (isNaN(I[8]) || I[8] == "") ? I[8] : parseFloat(I[8]).toFixed(2),
  14. w = (I[9] == "" || I[9] == "-") ? "-" : new XDate(Date.parse(I[9].replace(/-/ig, "/"))).toString("MM-dd"),
  15. t = (I[11] == "" || I[11] == "-") ? "-" : new XDate(Date.parse(I[11].replace(/-/ig, "/"))).toString("MM-dd"),
  16.     _sdq = I[14] == "" ? "&-" : I[14],
  17.     _hq_link = "http://quote.eastmoney.com/" + z + ".html"
  18.    
  19.     xls.push([z,y,_hq_link,r,l,a,j,w,t,_sdq].join('\t'))
  20. }
  21. var fso = new ActiveXObject('Scripting.FileSystemObject')
  22. var ts = fso.CreateTextFile('输出.xls',true,true)
  23. ts.Write(xls.join('\r\n'))
  24. ts.Close()
  25. alert('Bingo!')
  26. close()
  27. </script>
复制代码

作者: uuu888s    时间: 2015-3-5 10:39

本帖最后由 uuu888s 于 2015-3-11 08:56 编辑

大牛 我想再在xls里添加自定义的一列,该列里的数值为 最新价减去发行价( 也就是差价G-H )这个怎么在你的代码里实现
作者: CrLf    时间: 2015-3-5 12:13

回复 8# uuu888s


    [z,y,_hq_link,r,l,a,j,w,t,_sdq] 改成 [z,y,_hq_link,r,l,a,j,j-a,w,t,_sdq] 即可,标题栏那里应该很直观,你自己看着改下




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2