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

关于elmGetter库的使用问题,同类的元素只能获取到一部分

[复制链接]
  • TA的每日心情
    开心
    2023-7-13 09:56
  • 签到天数: 2 天

    [LV.1]初来乍到

    9

    主题

    93

    回帖

    120

    积分

    中级工程师

    积分
    120

    油中2周年油中3周年

    发表于 2024-1-19 23:49:48 | 显示全部楼层 | 阅读模式
    安装此脚本 如何安装? 脚本问题反馈 给脚本评分 查看代码

    请教各位大佬,我在使用elmGetter库的each方法的时候,代码当中对于css selector的路径经过了反复确认,同时也用xpath的方法验证过可以选中我要的元素。但是在代码运行过程中,只能获取到一部分元素,比如列表的长度有20个,我只能获取到6个左右。不知是什么原因,请指教。
    image.png
    我想要获取的元素如图所示,是每个a标签的href属性。
    可用示例链接进行尝试。
    商家列表

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

    [LV.7]常住居民III

    305

    主题

    4189

    回帖

    4056

    积分

    管理员

    积分
    4056

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

    发表于 2024-1-20 10:55:32 | 显示全部楼层

    我的代码如下,好像并没有问题

        elmGetter.selector($);
        elmGetter.each('ul#list-container li .list-info a.shop-name', company_name => {
            console.log("company_name", company_name[0].innerText);
        });
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-7-13 09:56
  • 签到天数: 2 天

    [LV.1]初来乍到

    9

    主题

    93

    回帖

    120

    积分

    中级工程师

    积分
    120

    油中2周年油中3周年

    发表于 2024-1-20 14:43:54 | 显示全部楼层
    王一之 发表于 2024-1-20 10:55
    [md]我的代码如下,好像并没有问题

    ```js

    感谢大佬 我试了一下您的代码 可以获得完整数据。然后我又回头试了我的代码也是可以的 问题是出在这个页面是“懒加载”的 需要鼠标滚到最底下才能获得完整数据
    回复

    使用道具 举报

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

    [LV.7]常住居民III

    305

    主题

    4189

    回帖

    4056

    积分

    管理员

    积分
    4056

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

    发表于 2024-1-20 16:03:32 | 显示全部楼层
    xiaooooooo 发表于 2024-1-20 14:43
    感谢大佬 我试了一下您的代码 可以获得完整数据。然后我又回头试了我的代码也是可以的 问题是出在这个页 ...

    模拟下滚动?
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2022-3-8 11:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    22

    主题

    881

    回帖

    1379

    积分

    荣誉开发者

    积分
    1379

    荣誉开发者卓越贡献油中2周年生态建设者油中3周年挑战者 lv2

    发表于 2024-1-20 22:24:13 | 显示全部楼层
    xiaooooooo 发表于 2024-1-20 14:43
    感谢大佬 我试了一下您的代码 可以获得完整数据。然后我又回头试了我的代码也是可以的 问题是出在这个页 ...

    这就不属于库的问题了,懒加载你可以尝试触发一下他的scroll事件。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-7-13 09:56
  • 签到天数: 2 天

    [LV.1]初来乍到

    9

    主题

    93

    回帖

    120

    积分

    中级工程师

    积分
    120

    油中2周年油中3周年

    发表于 2024-1-21 23:03:08 | 显示全部楼层

    // 获取页面高度
    const pageHeight = document.documentElement.scrollHeight;
    // 设置滚动距离
    window.scrollTo(0, pageHeight);

    噫 我把这段代码放进去没有效果 不知为啥
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5960

    回帖

    6759

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6759

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2024-1-22 13:36:23 | 显示全部楼层

    xiaooooooo 发表于 2024-1-21 23:03

    // 获取页面高度
    const pageHeight = document.documentElement.scrollHeight;
    // 设置滚动距离

    她是渐进式的加载
    应该是通过观察API监听的
    要逐步滚动到尾部的

    也可以考虑找注入点
    触发的时候属性改变了,直接打断点堆栈回溯找到了
    剩下的就是慢慢跟了

        function c(b, c, f) {
            var j, l, d, f = i.merge(f), c = a(f, c);
            j = k.getDomEventObservablesHolder(b, 1);
            if (!(d = j.handle)) {
                d = j.handle = function(a) {
                    var b = a.type
                      , c = d.currentTarget;
                    if (!(k.triggeredEvent === b || typeof KISSY === "undefined"))
                        if (b = k.getDomEventObservable(c, b)) {
                            a.currentTarget = c;
                            a = new h(a);
                            return b.notify(a)
                        }
                }
                ;
                d.currentTarget = b
            }
            if (!(l = j.observables))
                l = j.observables = {};
            j = l[c];
            if (!j) {
                j = l[c] = new k({
                    type: c,
                    currentTarget: b
                });
                j.setup()
            }
            j.on(f);
            b = null
        }
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-7-13 09:56
  • 签到天数: 2 天

    [LV.1]初来乍到

    9

    主题

    93

    回帖

    120

    积分

    中级工程师

    积分
    120

    油中2周年油中3周年

    发表于 2024-1-22 22:33:43 | 显示全部楼层

    李恒道 发表于 2024-1-22 13:36

    [md]她是渐进式的加载
    应该是通过观察API监听的
    要逐步滚动到尾部的

    image.png

    如果是要使用跟踪堆栈的方法,我就干脆直接跳过这个scroll动作,直接通过接口拿到数据更快了。
    店铺列表接口

    但是话说回来,我如果有逆向接口参数的水平,也就不会采用油猴脚本这个曲线救国的方式来获取数据了😢

    我还想到的一个方法是用我自己写的js脚本替换掉官方的js脚本,在我的js脚本中把这个变量导出然后输出到控制台(在上面的例子当中为e),但是这个方法通用性太差,很多网站都有校验js脚本完整性的机制,一旦发现js被篡改了就会另起一份。

    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5960

    回帖

    6759

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6759

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2024-1-23 04:48:11 | 显示全部楼层
    xiaooooooo 发表于 2024-1-22 22:33
    [md]![image.png](data/attachment/forum/202401/22/222625tykmc2y2rmgmp216.png)

    如果是要使用跟踪堆栈 ...

    油猴算是在有限范围内做动作
    其实如果论逆向能力来说反而比CDP之类的更最求在最少资源下打最极限的操作

    直接提接口也行~
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

    发表回复

    本版积分规则

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