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

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

[复制链接]
  • TA的每日心情
    开心
    昨天 15:43
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    3

    主题

    12

    回帖

    21

    积分

    助理工程师

    积分
    21
    发表于 昨天 15:56 | 显示全部楼层 | 阅读模式
    悬赏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数组,有什么办法吗?
    谢谢!

  • TA的每日心情
    开心
    2024-3-13 10:14
  • 签到天数: 211 天

    [LV.7]常住居民III

    305

    主题

    4158

    回帖

    4032

    积分

    管理员

    积分
    4032

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

    发表于 昨天 16:06 | 显示全部楼层

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

    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的每日心情
    开心
    昨天 15:43
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    3

    主题

    12

    回帖

    21

    积分

    助理工程师

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

    ```bash

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

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-13 10:14
  • 签到天数: 211 天

    [LV.7]常住居民III

    305

    主题

    4158

    回帖

    4032

    积分

    管理员

    积分
    4032

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

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

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

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

    使用道具 举报

  • TA的每日心情
    开心
    昨天 15:43
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    3

    主题

    12

    回帖

    21

    积分

    助理工程师

    积分
    21
    发表于 昨天 17:19 | 显示全部楼层

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

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

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

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

    回复

    使用道具 举报

  • TA的每日心情
    开心
    昨天 15:43
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    3

    主题

    12

    回帖

    21

    积分

    助理工程师

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

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

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-13 10:14
  • 签到天数: 211 天

    [LV.7]常住居民III

    305

    主题

    4158

    回帖

    4032

    积分

    管理员

    积分
    4032

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

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

    是要获取自选基金?

    实在不行可以这样去获取

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

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

    使用道具 举报

  • TA的每日心情
    开心
    昨天 15:43
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    3

    主题

    12

    回帖

    21

    积分

    助理工程师

    积分
    21
    发表于 昨天 22:45 | 显示全部楼层
    王一之 发表于 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的每日心情
    开心
    2024-3-13 10:14
  • 签到天数: 211 天

    [LV.7]常住居民III

    305

    主题

    4158

    回帖

    4032

    积分

    管理员

    积分
    4032

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

    发表于 昨天 23:29 | 显示全部楼层

    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了,不过说实话,没必要,已经知道这个逻辑了,直接劫持请求,自己处理一下可能更好点

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

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-13 10:14
  • 签到天数: 211 天

    [LV.7]常住居民III

    305

    主题

    4158

    回帖

    4032

    积分

    管理员

    积分
    4032

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

    发表于 昨天 23:33 | 显示全部楼层
    王一之 发表于 2024-10-30 23:29
    [md]说实话,知道获取那个没什么一样,知道这个东西是怎么得来的就行了

    我简单看了一下,这个网页也是通 ...

    我这里好像没考虑超过10个不保存在cookie里的情况,我没有账号,不太清楚另外的情况,不过思路应该也差不多,不去跟请求逻辑的话,就劫持一下渲染函数 ejs.render 拿list



    我没登录的情况下,加了14个,好像也还是存在cookie里
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

    发表回复

    本版积分规则

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