ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

请老师们解答:JSA能否从这个网址取数据240319

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-3-19 16:35 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
请老师们解答:JSA能否从这个网址取数据240319

http://guba.eastmoney.com/rank/stock?code=000917&from=

EXM@CFSPY{~{(~KPZXF}[HV.png

JSA写人气榜240318.7z

73.36 KB, 下载次数: 18

TA的精华主题

TA的得分主题

发表于 2024-4-4 12:57 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-4 22:14 | 显示全部楼层

首先要感谢美女老师百忙中的解答!!!。可能是这边WPS版本的问题,不能通过。能做到相对,对应的T\U\V\W列中去吗?学生再表感谢!!!

TA的精华主题

TA的得分主题

发表于 2024-5-21 20:05 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

使用无效,报错,能否上源代码,谢谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-29 14:30 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册


老师,您好!!!如何修改才能d在表格中的7,8,9列取到数据? 谢谢!!!
da4470a00c5288d1c05fdb03b515fb2f.png

TA的精华主题

TA的得分主题

发表于 2024-5-30 14:03 | 显示全部楼层
每次请求1只股票的数据,批量请求,会给服务器带来压力,慎用,大量请求,或许会被封IP?
代码参考如下:
  1. async function 股票人气榜(){
  2.         async function getRes(argm1, gpdm){
  3.                 let p = await fetch(`https://emappdata.eastmoney.com/stockrank/${argm1}`, {
  4.                   method: 'POST',
  5.                   headers: {'content-type': 'application/json'},
  6.                   body: JSON.stringify({'srcSecurityCode': `${gpdm}`})
  7.                 });
  8.                 let res = await p.json();
  9.                 return res;
  10.         };
  11.         let t1 = Date.now()
  12.         const gpdms = Range('表1[代码]').Value2.flat().map((x, i) => {
  13.                 if (typeof x == 'number') x = String(x);
  14.                 if (x.length < 6) x = '0'.repeat(6 - x.length) + x;
  15.                 x = '03'.includes(x[0]) ? 'SZ' + x : 'SH' + x;
  16.                 return x;
  17.         });
  18.         Range('表1[代码]').Value2 = gpdms.map(x =>
  19.                 [`=HYPERLINK("http://guba.eastmoney.com/rank/stock?code=${x}", "${x.slice(2)}")`])
  20.         let res1 = await Promise.all(gpdms.map((x, i) => getRes('getCurrentLatest', x)));
  21.         let res2 = await Promise.all(gpdms.map((x, i) => getRes('getProfileStockRank', x)));
  22.         let res = res1.map((x, i) =>
  23.                 [x.data.rank, x.data.rankChange, res2[i].data.oldUidRate, res2[i].data.newUidRate]
  24.         );
  25.         Range('表1[[实时排名]:[铁杆粉丝]]').Value2 = res;
  26.         console.log(`${res.length}只股票,用时:${(Date.now()-t1)*0.001}秒`)
  27. }
复制代码
附带说一下,求助问题,首先要尽量给答题者减少不必要麻烦,比如,楼主表格中的股票代码,我在全部27行代码中,就用了8行代码清洗。
其次,楼主需要的数据,并不能从楼主给的网址抓取,从我这抓到的包来看,返回的是加密的数据,要另找途径抓包。。。


评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-30 15:54 | 显示全部楼层
一江春水1688 发表于 2024-5-30 14:03
每次请求1只股票的数据,批量请求,会给服务器带来压力,慎用,大量请求,或许会被封IP?
代码参考如下:
...

感谢老师的解答!!! 没有数据,只抓取5只票难道就被封IP?
cf92e2d0ebe2f2de04ca896557d779c1.jpg

TA的精华主题

TA的得分主题

发表于 2024-5-30 18:34 来自手机 | 显示全部楼层
1  2024-5-30 15:54
л 5IP


5只股票自然不会,数十只也应该不会,数据是实时变化的,每天多次操作数千只就不好说了。
①选中你的表格所有单元,点【插入】【表格】,命名为“表1”
②第1列标题,命名为【代码】,【当前排名】改为【实时排名】

TA的精华主题

TA的得分主题

发表于 2024-5-31 13:21 | 显示全部楼层
看来没操作对,我上传附件吧

JSA写入东方人气榜240318.zip (41.84 KB, 下载次数: 7)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-31 16:43 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
一江春水1688 发表于 2024-5-30 18:34
1  2024-5-30 15:54
л 5IP

老师太优秀了,高手!!!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-21 18:49 , Processed in 0.047636 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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