GameMale
登陆 / 注册 搜索

USERCENTER

SEARCHSITE

搜索

查看: 2165|回复: 33
收起左侧

[功能优化] 【油猴脚本】帖子内容提取 活动员会用到的妙妙工具

  [复制链接] |关注本帖

咆哮虎的冠军之路You Can Pet Blaidd業火死鬥炙热的格拉迪欧拉斯裸体克里斯圣甲虫秘典永远的克叔【新春限定】果体 隆新神的赐福凯登‧阿兰科

     楼主| 星之子 发表于 2024-10-3 06:02:46 | 显示全部楼层 |阅读模式 <
    本帖最后由 星之子 于 2024-10-3 06:05 编辑
    动机
    最近想收集一下周年庆【星辰降临】活动的绝版勋章发放数据,然后在勋章公会发个帖子——但工作量确实很大,回帖格式也没有完全规范,真要一页一页整理还不如直接嘎了我。另外也是受到了 @墨燝 老师写的 活动内容爬取工具 (表格版) 的启发,所以就调教GPT写了这个脚本(感觉自己好像那种赛博奴隶主,天天压榨GPT这个赛博奴隶这是可以说的吗)。

    功能

    仅在形如 https://www.gamemale.com/thread-*(帖子ID)-*(页码)-1.html 的网站中生效:
    • 按下快捷键Ctrl+Y后,自动提取当前页面上所有回帖的作者UID及其回帖内容(忽略格式,仅提取纯文本)
    • 这些内容将会被合并为一行,换行将被替换为用户指定的特定符号(默认全角分号,可在代码中修改)
    • 将内容每行一个,合并为“extracted_text-帖子ID-页码.txt”下载到本地
    • 然后跳转到帖子的下一页,方便再次按下快捷键Ctrl+Y,进行下一次提取
    重复上述过程,直至帖子的最后一页。

    优点:
    • 简单易行门槛低,无需提取cookie和运行python
    • 抗干扰性强,忽略格式提取所有回帖的文本内容
    • 适用范围更广,无需特定格式也可提取
    • 访问量相对合理(相当于手动浏览一遍帖子,速度不会很快但也够用,3秒按一次快捷键相当于1分钟20页)
    • 可以选择是否提取“本帖最后由 someone 于 yyyy-m-d hh:mm 编辑”信息(默认忽略,可在代码中修改)

    缺点:
    • 导出结果一页一个.txt,需要借助其它工具合并
    • 需要善用Excel的数据-分列功能自行补足成表格



    代码

    @Name
    1. // ==UserScript==
    2. // @name         看帖:活动员神器 帖子内容提取
    3. // @namespace    https://www.gamemale.com/space-uid-733330.html
    4. // @version      2.1
    5. // @description  忽略格式提取所有回帖的文本内容,将换行用指定分隔符代替,并前缀UID,每回帖一行,并按照当前页码命名
    6. // @author       Étoiles
    7. // @match        https://www.gamemale.com/thread-*-*-1.html
    8. // @icon         https://www.google.com/s2/favicons?sz=64&domain=gamemale.com
    9. // @grant        none
    10. // ==/UserScript==

    11. (function () {
    12.     'use strict';
    13.     //在这里调整是否忽略“本帖最后由 someone 于 yyyy-m-d hh:mm 编辑” 开启:1 关闭:0
    14.     const IGNORE_PSTATUS = 1;

    15.     //在这里修改触发按钮,默认Ctrl+Y
    16.     document.addEventListener('keydown', function (event) {
    17.         if (event.ctrlKey && event.key === 'y') {

    18.             let elements = document.querySelectorAll('td.t_f, div.authi');
    19.             let contentArray = [];
    20.             let currentAuthorId = '';

    21.             elements.forEach(function (element) {
    22.                 if (element.classList.contains('authi')) {
    23.                     let authorElement = element.querySelector('a[href*="space-uid-"]');
    24.                     if (authorElement) {
    25.                         let authorIdMatch = authorElement.href.match(/space-uid-(\d+)\.html/);
    26.                         if (authorIdMatch) {
    27.                             //这里的★只是一个标识符,方便确认这是脚本自动添加的UID而非回复内容里的
    28.                             currentAuthorId = `★${authorIdMatch[1]}`;
    29.                         }
    30.                     }
    31.                 } else if (element.classList.contains('t_f')) {
    32.                     let clone = element.cloneNode(true);

    33.                     //忽略 <i class="pstatus"> 本帖最后由 someone 于 yyyy-m-d hh:mm 编辑 </i> 和紧随其后的<br>
    34.                     if (IGNORE_PSTATUS) {
    35.                         let pstatusElements = clone.querySelectorAll('i.pstatus');
    36.                         pstatusElements.forEach(function (pstatusElement) {
    37.                             let nextSibling = pstatusElement.nextSibling;
    38.                             for (let i = 0; i < 2; i++) {
    39.                                 if (nextSibling && nextSibling.nodeName === 'BR') {
    40.                                     let toRemove = nextSibling;
    41.                                     nextSibling = nextSibling.nextSibling;
    42.                                     toRemove.remove();
    43.                                 }
    44.                             }
    45.                             pstatusElement.remove();
    46.                         });
    47.                     }


    48.                     //脚本会把一个用户的帖子合并为一行,将换行符替换为某个特定分隔符
    49.                     //在这里可以调整分隔符,默认是半角分号(感觉这个分号不常用)可在 ↓ 这里修改
    50.                     let textContent = clone.innerHTML.replace(/<br\s*\/?>/gi, ';').replace(/<[^>]+>/g, '').replace(/^\s*;/g, '').replace(/\s+/g, ' ').trim();
    51.                     if (currentAuthorId) {
    52.                         textContent = currentAuthorId + ';' + textContent;
    53.                         currentAuthorId = ''; // Reset after using
    54.                     }
    55.                     contentArray.push(textContent);
    56.                 }
    57.             });

    58.             //基于当前帖子ID和页码给文件命名
    59.             let currentUrl = window.location.href;
    60.             let match = currentUrl.match(/thread-(\d+)-(\d+)-(\d+)\.html/);
    61.             let filename = 'extracted_text';
    62.             if (match) {
    63.                 let threadId = match[1];
    64.                 let currentPage = match[2];
    65.                 filename = `extracted_text-${threadId}-${currentPage}`;
    66.             }

    67.             let blob = new Blob([contentArray.join('\n')], { type: 'text/plain' });
    68.             let link = document.createElement('a');
    69.             link.href = URL.createObjectURL(blob);
    70.             link.download = filename + '.txt';
    71.             link.click();

    72.             //自动跳转到下一页
    73.             if (match) {
    74.                 let threadId = match[1];
    75.                 let currentPage = parseInt(match[2]);
    76.                 let nextPage = currentPage + 1;
    77.                 let newUrl = currentUrl.replace(/thread-(\d+)-(\d+)-(\d+)\.html/, `thread-${threadId}-${nextPage}-$3.html`);
    78.                 window.location.href = newUrl;
    79.             }
    80.         }
    81.     });
    82. })();
    复制代码

    附录

    Excel 分列教程(以【疯狂之旅】疯狂山庄-报名登记 第一页为例)


    来自群组: 星象占卜

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x

    评分

    参与人数 3血液 +9 追随 +3 堕落 +2 收起 理由
    notunicorna + 5 + 1 + 1 三连献上
    肥鱼 + 4 + 1 + 1 赞一个!
    Morphyus + 1

    查看全部评分

    回复

    使用道具 举报

    更多的珍珠猫咪点唱机桂花米糕不灭的蓝宝石被释放的灵魂红心玉『搓粉团珠』脉律辐石龙鳞石检定场

      zzy159 发表于 2024-10-3 06:53:44 | 显示全部楼层 <
      回复

      使用道具 举报

      诺克提斯·路西斯·伽拉姆幸运女神的微笑保加利亚妖王『冰雕马拉橇』银色溜冰鞋卡利亚权杖大天使之杖克苏鲁的仆从雪王的心脏刀锋女王 - 归宿

        dwsleyi 发表于 2024-10-3 07:24:36 | 显示全部楼层 <
        回复

        使用道具 举报

        卡洛斯·奥利维拉克里斯·埃文斯冒险专用绳索裸体克里斯自定义男从Homunculus雄躯的昇格缘起星空士兵 76人鱼之泪不洁圣子

          alexwang 发表于 2024-10-3 07:40:11 | 显示全部楼层 <
          回复

          使用道具 举报

          金钱马车『逆境中的幸运女神』裸体克里斯【圣诞限定】心心念念小雪人【夏日限定】夏日的泰凯斯永远的克叔史莱姆牧场虚空之海的鲸男巫之歌诺曼底号

            前方无怪 发表于 2024-10-3 08:10:19 | 显示全部楼层 <
            回复

            使用道具 举报

            漂洋小船冒险用指南针破损的旧书人鱼之泪雪王的心脏苏格兰圆脸胖鸡[Pro Max]丛林的鸟飞走了不曾寄出的信件幽灵竹筒『随时随地开启!』

              凯诺斯 发表于 2024-10-3 08:35:21 | 显示全部楼层 <
              回复

              使用道具 举报

              最终幻想XIV最终幻想XVI赛博朋克2077丹妮莉丝·坦格利安希尔瓦娜斯·风行者官复原职塞巴斯蒂安·斯坦杰森‧斯坦森荒野大镖客:救赎 II

                tuxonstar 发表于 2024-10-3 08:37:00 | 显示全部楼层 <
                回复

                使用道具 举报

                弗雷迪玩偶发条八音盒桂花米糕鎏彩万幢女巫之路虚空之海的鲸【新春限定】果体 隆『召唤好运的角笛』永远的克叔業火死鬥

                  娱乐法师火布偶 发表于 2024-10-3 08:58:53 | 显示全部楼层 <
                  回复

                  使用道具 举报

                    咸鱼鱼 发表于 2024-10-3 09:05:17 | 显示全部楼层 <
                    可以先疯狂点击下一页,把所有页面加载完成
                    然后再一次性提取,这样更加省事一点
                    回复

                    使用道具 举报

                    永远的克叔Forever Titanic光之少女の魔法书双向圣杯:焕然意志天灾骑士阿努比斯信徒弗雷迪玩偶猫咪点唱机自定义男从Homunculus

                      PURO_ 发表于 2024-10-3 09:22:09 | 显示全部楼层 <
                      回复

                      使用道具 举报

                      缘起星空虚空之海的鲸

                        you9632587 发表于 2024-10-3 09:24:43 | 显示全部楼层 <
                        能忽略格式和空格还是方便多了,之前格雷用脚本之前还要一个一个去手动改格式
                        回复

                        使用道具 举报

                        GM論壇榮譽勛章森林羊男发芽的种子夜灯幼年独角兽驯化红龙幼崽牧羊人寶可夢 Pokémon

                          Blackless 发表于 2024-10-3 09:30:06 | 显示全部楼层 <
                          回复

                          使用道具 举报

                          竹取物语索林·临终一役自由叶卡捷琳娜大帝You Can Pet Blaidd炽焰咆哮虎官复原职实现梦想启程终归一人

                            黑夜下的灯光 发表于 2024-10-3 09:34:56 | 显示全部楼层 <
                            回复

                            使用道具 举报

                            亚索月影狼晓月终焉旅行骰子!卡利亚权杖

                              黑达克 发表于 2024-10-3 09:57:27 | 显示全部楼层 <
                              回复

                              使用道具 举报

                                user_login 发表于 2024-10-3 09:57:30 | 显示全部楼层 <
                                回复

                                使用道具 举报

                                不灭的蓝宝石巴流·雷之矢岛田半藏雷之显化者岛田源氏康纳/Connor亚当‧简森巴尔弗雷亚

                                  枫糖 发表于 2024-10-3 10:00:29 | 显示全部楼层 <
                                  回复

                                  使用道具 举报

                                  剑指撒冷凯登‧阿兰科诺曼底号猎户座的明珠缘起星空赛博朋克2077自定义男从Homunculus检定场命运的轮廓旅行骰子!

                                    Morphyus 发表于 2024-10-3 10:16:22 | 显示全部楼层 <
                                    回复

                                    使用道具 举报

                                    【圣诞限定】心心念念小雪人裸体克里斯杰森‧斯坦森约翰·康斯坦丁丹·雷诺斯永远的克叔亚瑟‧摩根内森·德雷克虚空之海的鲸卡利亚权杖

                                      咕里奇 发表于 2024-10-3 10:52:45 | 显示全部楼层 <
                                      对我这类闲鱼没用但是对泥潭的活动员们很有用的脚本,方便活动员也能更好地搞坛内活动了
                                      回复

                                      使用道具 举报

                                      20x43 隐形➀吃饱金币的Doge小小安全帽金牌矿工冒险用指南针小小舞台阿拉喵?神灯弗雷迪玩偶『梦旅存根』

                                        不是卖萌的基佬 发表于 2024-10-3 11:03:04 | 显示全部楼层 <
                                        回复

                                        使用道具 举报

                                        You Can Pet Blaidd『迷翳结晶:收集颗粒』铁牛妙手空空吃饱金币的Doge亚瑟‧摩根自由杰夫‧莫罗艾吉奥炽焰咆哮虎

                                          提尔特 发表于 2024-10-3 11:03:49 | 显示全部楼层 <
                                          回复

                                          使用道具 举报

                                          您需要登录后才可以回帖 登录 | 立即注册

                                          本版积分规则

                                          关闭

                                          站长公告上一条 /1 下一条

                                          文字版|手机版|小黑屋|GameMale

                                          GMT+8, 2025-12-6 13:49 , Processed in 0.193903 second(s), 143 queries , Redis On.

                                          Copyright © 2013-2025 GameMale

                                          All Rights Reserved.

                                          快速回复 返回列表