您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
自動讀取並合併 Yahoo! News 文章
// ==UserScript== // @name Yahoo!News 自動合併多頁 // @namespace yahoo-news-merger // @author gpt5 // @version 2.0 // @description 自動讀取並合併 Yahoo! News 文章 // @match https://news.yahoo.co.jp/articles/* // @exclude https://news.yahoo.co.jp/articles/*/comments* // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; // 等待主文區塊載入 function waitForArticleBody(callback) { const check = () => { // 嘗試多種常見 selector let body = document.querySelector('[data-ylk*="art_main"]') || document.querySelector('.sc-iBPTik.jViSDk') || document.querySelector('.article_body'); if (body) { callback(body); } else { setTimeout(check, 300); } }; check(); } // 自動逐頁加載(最多到5頁) function fetchAndAppendPages(mainBody) { // 解析目前網址與 base const baseUrl = location.href.replace(/(\?|&)page=\d+/, '').replace(/#.*$/, ''); let page = 2; const maxPage = 5; const insertDivider = () => { let hr = document.createElement('hr'); hr.style.margin = "2em 0"; mainBody.appendChild(hr); }; function fetchNextPage() { if (page > maxPage) return; const url = `${baseUrl}${baseUrl.includes('?') ? '&' : '?'}page=${page}`; fetch(url) .then(resp => resp.text()) .then(htmlText => { let parser = new DOMParser(); let doc = parser.parseFromString(htmlText, "text/html"); let pageBody = doc.querySelector('[data-ylk*="art_main"]') || doc.querySelector('.sc-iBPTik.jViSDk') || doc.querySelector('.article_body'); // 若該頁無內容可能提前終止 if (pageBody && pageBody.textContent.trim().length > 30) { insertDivider(); Array.from(pageBody.childNodes).forEach(node => { mainBody.appendChild(node.cloneNode(true)); }); page++; fetchNextPage(); // 遞迴去抓下一頁 } }) .catch(()=>{}); // 安靜處理失敗 } fetchNextPage(); } waitForArticleBody(mainBody => { fetchAndAppendPages(mainBody); }); })();