上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
12下一页
返回列表 发新帖

如何获取获取服务器脚本中的list数组?

[复制链接]
  • TA的每日心情
    开心
    1 小时前
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    3

    主题

    15

    回帖

    24

    积分

    助理工程师

    积分
    24
    发表于 2024-10-30 15:56:35 | 显示全部楼层 | 阅读模式
    悬赏2油猫币已解决

    本帖最后由 gues1688 于 2024-10-30 15:57 编辑

    网站,https://favor.fund.eastmoney.com/
    有如下脚本(片段):

    <script type="text/template" id="templ_fundlist_kfs">
        <tbody>
            <% for(var j=0,len=list.length;j<len;j++){ %>
                <tr class="<%=j%2==1?'even':''%> fund-row" data-settop="<%=list[j].setTop%>"
                data-fundtype="<%=list[j].FUNDTYPE%>" data-fundcode="<%=list[j].FCODE%>"
                data-fundname="<%=list[j].SHORTNAME%>">
                ......
    </script>

    我想获取服务器脚本中的list数组,有什么办法吗?
    谢谢!

    最佳答案

    查看完整内容

    [md]```js // ==UserScript== // @name New Userscript // @namespace https://bbs.tampermonkey.net.cn/ // @version 0.1.0 // @description try to take over the world! // @author You // @match https://favor.fund.eastmoney.com/ // @run-at document-end // ==/UserScript== const wrap = ejs.render; ejs.render = function (a, b, c) { console.log(a, b, c); return wr ...
  • TA的每日心情
    开心
    前天 13:37
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4196

    回帖

    4061

    积分

    管理员

    积分
    4061

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2024-10-30 15:56:36 | 显示全部楼层

    gues1688 发表于 2024-10-31 12:54

    大佬的这段回复,信息量超大,我得认真学习、反复琢磨。
    初步看来,似乎分两种情况,登陆和不登陆,处理 ...

    // ==UserScript==
    // @name         New Userscript
    // @namespace    https://bbs.tampermonkey.net.cn/
    // @version      0.1.0
    // @description  try to take over the world!
    // @author       You
    // @match        https://favor.fund.eastmoney.com/
    // @run-at       document-end
    // ==/UserScript==
    
    const wrap = ejs.render;
    ejs.render = function (a, b, c) {
        console.log(a, b, c);
        return wrap.apply(this, [a, b, c]);
    }

    这样就可以劫持到数据了,判断一下入参,拿你想拿的

    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    前天 13:37
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4196

    回帖

    4061

    积分

    管理员

    积分
    4061

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2024-10-30 16:06:56 | 显示全部楼层

    看起来是通过这个接口获取的数据,调用这个接口就好了

    curl 'https://api.fund.eastmoney.com/favor/GetFundsInfo?' \
      -H 'Accept: application/json, text/javascript, */*; q=0.01' \
      -H 'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6' \
      -H 'Connection: keep-alive' \
      -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' \
      -H 'Origin: https://favor.fund.eastmoney.com' \
      -H 'Referer: https://favor.fund.eastmoney.com/' \
      --data-raw 'fcodes='
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    1 小时前
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    3

    主题

    15

    回帖

    24

    积分

    助理工程师

    积分
    24
    发表于 2024-10-30 16:54:26 | 显示全部楼层
    王一之 发表于 2024-10-30 16:06
    [md]看起来是通过这个接口获取的数据,调用这个接口就好了

    ```bash

    谢谢!
    不是这个接口,这个接口,fcodes= 本身就需要引用这个list
    回复

    使用道具 举报

  • TA的每日心情
    开心
    前天 13:37
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4196

    回帖

    4061

    积分

    管理员

    积分
    4061

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2024-10-30 17:08:08 | 显示全部楼层
    gues1688 发表于 2024-10-30 16:54
    谢谢!
    不是这个接口,这个接口,fcodes= 本身就需要引用这个list

    你想获取的数据是哪些呢?

    网站里面我没有看到你的脚本片段
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    1 小时前
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    3

    主题

    15

    回帖

    24

    积分

    助理工程师

    积分
    24
    发表于 2024-10-30 17:19:20 | 显示全部楼层

    王一之 发表于 2024-10-30 17:08

    你想获取的数据是哪些呢?

    网站里面我没有看到你的脚本片段

    可能要先自选一些基金吧,比如收藏下面这些基金
    006733
    013923
    019072
    012363
    007531
    400015
    015178
    013331
    015046
    002190
    010685
    005491
    然后,在控制台,输入:
    document.querySelectorAll('#templ_fundlist_kfs'),可看到脚本片段,比较长,我节选并格式化了部分片段。
    想要获取脚本中的 list 数组

    回复

    使用道具 举报

  • TA的每日心情
    开心
    1 小时前
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    3

    主题

    15

    回帖

    24

    积分

    助理工程师

    积分
    24
    发表于 2024-10-30 17:26:48 | 显示全部楼层
    gues1688 发表于 2024-10-30 17:19
    [md]可能要先自选一些基金吧,比如收藏下面这些基金
    006733
    013923

    如果自选的基金,不超过10个,自选列表,似乎保存在 cookie 中,超过10个的话,不知道如何获取。
    如果在这个网站平台有注册的话,有个接口可以获取自选列表,
    https://fundfavorapi.eastmoney.com/favor/fcode/get2?passportid=......
    但获取的自选列表跟 list 顺序
    也就是跟网站显示的顺序是不一样的。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    前天 13:37
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4196

    回帖

    4061

    积分

    管理员

    积分
    4061

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2024-10-30 21:25:54 | 显示全部楼层
    gues1688 发表于 2024-10-30 17:26
    如果自选的基金,不超过10个,自选列表,似乎保存在 cookie 中,超过10个的话,不知道如何获取。
    如果在 ...

    是要获取自选基金?

    实在不行可以这样去获取

    document.querySelectorAll('.em-myfavor-table [data-fundname]')

    其他数据我看好像是存cookie里面的,可能先通过api获取一次列表,再通过cookie匹配id提取出来并按id排序这样?
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    1 小时前
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    3

    主题

    15

    回帖

    24

    积分

    助理工程师

    积分
    24
    发表于 2024-10-30 22:45:12 | 显示全部楼层
    王一之 发表于 2024-10-30 21:25
    是要获取自选基金?

    实在不行可以这样去获取

    嗯,是要获取自选开放式基金列表,另有用途。
    通过网页html获取的代码,我知道,大致如下:
    let arr = [];
    document.querySelectorAll('#kfsTable a.code').forEach(x => arr.push(x.innerText))
    console.log(JSON.stringify(arr, null, 4));

    主要目的,如1楼所述,是想知道【如何获取获取网页脚本中的list数组?】
    回复

    使用道具 举报

  • TA的每日心情
    开心
    前天 13:37
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4196

    回帖

    4061

    积分

    管理员

    积分
    4061

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2024-10-30 23:29:44 | 显示全部楼层

    gues1688 发表于 2024-10-30 22:45

    嗯,是要获取自选开放式基金列表,另有用途。
    通过网页html获取的代码,我知道,大致如下:
    let arr = [] ...

    说实话,知道获取那个没什么一样,知道这个东西是怎么得来的就行了

    我简单看了一下,这个网页也是通过调用https://api.fund.eastmoney.com/favor/GetFundsInfo?这个API获取到数据,然后根据cookie里的数据处理得到的。具体的逻辑哥哥还是要搜索一下关键字url: apiUrl.GetFundsInfo,,然后去调试一下。

    image.png

    var t=I()里面核心的代码就是下面这个,从cookie里面获取到Eastmoney_Fund内容。

    utils.getCookie("Eastmoney_Fund");

    处理完成之后赋值给u.Data,然后这时候的KFS就只有自选的几个了

    image.png

    后面再跟进z里面,可以看到渲染逻辑了

    image.png

    至于想拿到list,就考虑劫持一下ejs.render这个方法,从参数里面拿到list了,不过说实话,没必要,已经知道这个逻辑了,直接劫持请求,自己处理一下可能更好点

    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

    发表回复

    本版积分规则

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