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

求问大家我想实现网页自动翻页的功能该如何操作?

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

    [LV.1]初来乍到

    9

    主题

    93

    回帖

    119

    积分

    中级工程师

    积分
    119

    油中2周年油中3周年

    发表于 2023-6-20 13:59:47 | 显示全部楼层
    cxxjackie 发表于 2023-6-17 23:14
    反复横跳的主要原因是while(true)死循环了,油猴本身就会在加载新页面时重新执行脚本,不需要写循环去反复 ...

    更新一版 我后来调试好啦
    用了大佬之前传授的调试代码在控制台打印父级

    (function() {
        'use strict';


        elmGetter.selector($);
        elmGetter.selector('css');
        elmGetter.each('div.atomic_table_con', document.body, company_name => {
        console.log(company_name.cloneNode(true));
        var dataList = [];
        var collection_1 = $(company_name).find('div.static_con_outer').find('tbody tr')
        var collection_2 = $(company_name).find('div.scroll_con_outer').find('tbody tr')
        for (var i=0; i<collection_1.length; i++){
                var xuhao = $(collection_1).find('td').eq(0).find('div').text();
                var daima = $(collection_1).find('td').eq(2).find('div').text();
                var mingcheng = $(collection_1).find('td').eq(3).find('div a').text();
                var xianjia = $(collection_2).find('td').eq(0).find('div').text();
                var zhangdiefu = $(collection_2).find('td').eq(1).find('div').text();
                var zongshizhi = $(collection_2).find('td').eq(2).find('div a').text();
                var liutongshizhi = $(collection_2).find('td').eq(3).find('div a').text();
                var suoshuhangye = $(collection_2).find('td').eq(4).find('div span a').text();
                dataList.push({
                    'xuhao': xuhao,
                    'daima': daima,
                    'mingcheng': mingcheng,
                    'xianjia': xianjia,
                    'zhangdiefu': zhangdiefu,
                    'zongshizhi': zongshizhi,
                    'liutongshizhi': liutongshizhi,
                    'suoshuhangye': suoshuhangye
                })


        }
            console.log(dataList);
    });
    回复
    订阅

    使用道具 举报

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

    [LV.1]初来乍到

    22

    主题

    862

    回帖

    1361

    积分

    荣誉开发者

    积分
    1361

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

    发表于 2023-6-20 21:07:20 | 显示全部楼层
    xiaooooooo 发表于 2023-6-20 13:59
    更新一版 我后来调试好啦
    用了大佬之前传授的调试代码在控制台打印父级

    也可以把两个数组的定义放到回调函数之外,然后在第二个回调中通过下标获取第一个数组中的对象,再用Object.assign合并。
    回复

    使用道具 举报

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

    [LV.1]初来乍到

    9

    主题

    93

    回帖

    119

    积分

    中级工程师

    积分
    119

    油中2周年油中3周年

    发表于 2023-6-20 23:02:22 | 显示全部楼层
    cxxjackie 发表于 2023-6-20 21:07
    也可以把两个数组的定义放到回调函数之外,然后在第二个回调中通过下标获取第一个数组中的对象,再用Obje ...

    不行的 两个数组不能分步获取 我试过这个数组合并的操作,结果是左右数组对不上
    可能是由于元素插入没有按照顺序来 数组其实是乱序的
    回复

    使用道具 举报

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

    [LV.1]初来乍到

    9

    主题

    93

    回帖

    119

    积分

    中级工程师

    积分
    119

    油中2周年油中3周年

    发表于 2023-6-20 23:03:21 | 显示全部楼层
    cxxjackie 发表于 2023-6-20 21:07
    也可以把两个数组的定义放到回调函数之外,然后在第二个回调中通过下标获取第一个数组中的对象,再用Obje ...

    哦你说了是下标获取 这招我还不会 拿不到下标
    回复

    使用道具 举报

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

    [LV.1]初来乍到

    22

    主题

    862

    回帖

    1361

    积分

    荣誉开发者

    积分
    1361

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

    发表于 2023-6-20 23:35:44 | 显示全部楼层
    xiaooooooo 发表于 2023-6-20 23:03
    哦你说了是下标获取 这招我还不会 拿不到下标

    逐项合并,不要整个数组合并,因为2个数组的下标是一一对应的,以第二个数组当前的长度为参考即可:
    1. const dataList = [];
    2. const dataList2 = [];
    3. elmGetter.each('...', el => {
    4.     dataList.push(...);
    5. });
    6. elmGetter.each('...', el => {
    7.     dataList2.push(...);
    8.     const index = dataList2.length - 1;
    9.     Object.assign(dataList[index], dataList2[index]);
    10.     console.log(dataList[index]);
    11. });
    复制代码
    回复

    使用道具 举报

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

    [LV.1]初来乍到

    9

    主题

    93

    回帖

    119

    积分

    中级工程师

    积分
    119

    油中2周年油中3周年

    发表于 2023-6-28 22:52:01 | 显示全部楼层
    cxxjackie 发表于 2023-6-20 23:35
    逐项合并,不要整个数组合并,因为2个数组的下标是一一对应的,以第二个数组当前的长度为参考即可:
    ...

    谢谢大佬 这招我试验了一下可行
    网上我查了一下 这个是把两个对象的属性拼接在一起了 有点像python的zip函数
    Object.assign(dataList[index], dataList2[index]);
    回复

    使用道具 举报

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

    [LV.1]初来乍到

    9

    主题

    93

    回帖

    119

    积分

    中级工程师

    积分
    119

    油中2周年油中3周年

    发表于 2023-6-28 23:02:48 | 显示全部楼层
    cxxjackie 发表于 2023-6-20 23:35
    逐项合并,不要整个数组合并,因为2个数组的下标是一一对应的,以第二个数组当前的长度为参考即可:
    ...

    大佬 我可不可以请教一个别人脚本的问题?就是我在网上找到一个叫东方永页机的脚本,链接如下:
    https://greasyfork.org/zh-CN/scripts/438684-pagetual
    我想要学习他把页面预加载然后拼接在下方的方法,可否请你指点我一下?

    不需要做到他那样的万能识别,只需要对当前页面上的某一个跳转按钮进行预加载就行 比方说网页上常用的【详情】按钮
    回复

    使用道具 举报

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

    [LV.1]初来乍到

    22

    主题

    862

    回帖

    1361

    积分

    荣誉开发者

    积分
    1361

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

    发表于 2023-6-29 22:26:22 | 显示全部楼层
    xiaooooooo 发表于 2023-6-28 23:02
    大佬 我可不可以请教一个别人脚本的问题?就是我在网上找到一个叫东方永页机的脚本,链接如下:
    https:// ...

    用ajax请求下一页的数据,分析并截取需要的部分,然后拼接到当前页面,主要涉及DOM操作。偷懒一点可以用iframe,截取指定位置的内容再拼接,这个要注意脚本死循环的问题,还有部分网站不支持这么搞。这些做法的开销都比较大,相当于后台打开了多个完整页面来截取内容,理想的做法是请求json数据,这个要看网站有没有相关API,得自己抓包分析。还有假如网站本身有加载下一页的算法,可以尝试对其进行注入和改造,需要一定的逆向技术。
    回复

    使用道具 举报

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

    [LV.1]初来乍到

    9

    主题

    93

    回帖

    119

    积分

    中级工程师

    积分
    119

    油中2周年油中3周年

    发表于 2023-7-11 01:04:03 | 显示全部楼层
    本帖最后由 xiaooooooo 于 2023-7-11 01:41 编辑
    cxxjackie 发表于 2023-6-29 22:26
    用ajax请求下一页的数据,分析并截取需要的部分,然后拼接到当前页面,主要涉及DOM操作。偷懒一点可以用i ...

    谢大佬指点 我用iframe调通了 :)

    // @match        https://wenshu.court.gov.cn/*
    // @require      http://cdn.bootcss.com/jquery/1.11.2/jquery.js
    // @require      https://scriptcat.org/lib/513/2.0.0/ElementGetter.js
    // @grant        GM_xmlhttpRequest

    // ==/UserScript==


    (function() {
        'use strict';


        elmGetter.selector($);
        elmGetter.each('#_view_1545184311000 div.LM_list', company_name => {
            console.log(company_name);
            console.log('page is fully loaded');
            console.log('xx');
            var dataList = [];
            for (var i=0; i<company_name.length; i++){
                var casename = $(company_name).find('a.caseName').text();
                var casecourt = $(company_name).find('span.slfyName').text();
                var casenumber = $(company_name).find('span.ah').text();
                var judgedate = $(company_name).find('span.cprq').text();
                var casecontent = $(company_name).find('p').text();
                var originalurl = $(company_name).find('a.caseName').attr('href');
                var caseurl = originalurl.replace('..','https://wenshu.court.gov.cn/website/wenshu');

                // 如果不存在,则创建一个 iframe
                var iframe = document.createElement('iframe');
                //iframe.sandbox = 'allow-same-origin allow-scripts allow-popups allow-forms';
                iframe.id = 'Autopage_iframe';
                iframe.src = caseurl;

                document.documentElement.appendChild(document.createElement('style')).textContent = 'iframe#Autopage_iframe {position: absolute !important; top: -9999px !important; left: -9999px !important; width: 100% !important; height: 100% !important; border: none !important; z-index: -999 !important;}';

                company_name.appendChild(iframe);


                dataList.push({
                    'casename': casename,
                    'casecourt': casecourt,
                    'casenumber': casenumber,
                    'judgedate': judgedate,
                    'casecontent':casecontent,
                    'caseurl':caseurl
                })


            }
            console.log(dataList);

       
        });

        // Your code here...
    })();




    回复

    使用道具 举报

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

    [LV.1]初来乍到

    22

    主题

    862

    回帖

    1361

    积分

    荣誉开发者

    积分
    1361

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

    发表于 2023-7-12 22:21:32 | 显示全部楼层
    xiaooooooo 发表于 2023-7-11 01:04
    谢大佬指点 我用iframe调通了 :)

    // @match        https://wenshu.court.gov.cn/*

    你这个好像不是翻页,而是预览内容,翻页应该在页面中有现成算法可以调用的,就是比较难。
    回复

    使用道具 举报

    发表回复

    本版积分规则

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