js把B站收藏夹内视频链接导出为html,并支持egde浏览器收藏夹格式

文章介绍了一种方法,通过修改大佬的JavaScript代码,实现从B站收藏夹导出视频链接到HTML文件,以便导入Edge浏览器收藏夹。作者提到,这个方法适用于那些遇到B站视频失效问题或者对B站收藏夹功能不满意的用户。
该文章已生成可运行项目,

一方面苦于不知道B站视频失效了啥已久,另一方面b站收藏夹实在做得稀烂、体验不如edge自带收藏夹的一半,所以我决定把b站视频链接导出。

(实测已失效的视频也能把标题导出)

用在线编译环境鼓捣了两个小时,出现莫名其妙的bug一直没法使用api,又懒得专门下载python pycharm,所以改用js实现。因为还没正式学过前端,所以参考了大佬的博客,把他的代码修改得满足了我的需求。

以下是大佬的代码:

快速导出B站收藏单节目列表 - 鱼肉真好吃 - 博客园 (cnblogs.com)

以下是我修改后的:

function get_list() {
    let result = "";
    document.querySelectorAll(".items__item .bili-video-card").forEach(card => {
        const titleElement = card.querySelector(".bili-video-card__title");
        const title = titleElement ? titleElement.textContent.trim() : "";
        
        const linkElement = card.querySelector(".bili-cover-card");
        let link = linkElement ? linkElement.getAttribute("href") : "";
        link = link.startsWith("http") ? link : "https:" + link;

        result += `<DT><A HREF="${link}" ADD_DATE="${Date.now()}">${title}</A>\n`;
    });
    return result;
}

var html = '<!DOCTYPE NETSCAPE-Bookmark-file-1>\n<!-- This is an automatically generated file.\n     It will be read and overwritten.\n     DO NOT EDIT! -->\n<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">\n<TITLE>Bookmarks</TITLE>\n<H1>Bookmarks</H1>\n<DL><p>\n';

async function main() {
    // 等待页面稳定
    await new Promise(resolve => setTimeout(resolve, 500));
    
    html += get_list();
    
// 获取所有下一页按钮(包括禁用的)
const nextBtns = document.querySelectorAll('.vui_button.vui_pagenation--btn.vui_pagenation--btn-side');
// 找到最后一个未被禁用的下一页按钮
let nextBtn = null;
for (let i = nextBtns.length - 1; i >= 0; i--) {
    if (!nextBtns[i].disabled && nextBtns[i].textContent.trim() === "下一页") {
        nextBtn = nextBtns[i];
        break;
    }
}
    
    if (!nextBtn || nextBtn.textContent.trim() !== "下一页") {
        html += '</DL><p>\n';
        download('bookmarks.html', html);
    } else {
        nextBtn.click();
        // 等待1秒后继续执行
        setTimeout(main, 1000);
    }
}

function download(filename, text) {
    var element = document.createElement('a');
    element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
    element.setAttribute('download', filename);
    element.style.display = 'none';
    document.body.appendChild(element);
    element.click();
    document.body.removeChild(element);
}


setTimeout(main, 500); 

在收藏页面按f12,填写上述代码,回车,链接下载完成。

可以把下载的html导入edge浏览器收藏夹。

理论上浏览器收藏夹属于Internet Explorer收藏夹格式应该都可以把该html文件导入,不过我之研究了edge,所以不能保证。

本文章已经生成可运行项目
由于Edge浏览器现在已经基于Chromium内核,可使用与Chrome类似的Selenium配置选项来实现在Edge浏览器中填写表单。以下是一个示例代码,展示如何使用Python的Selenium库在Edge浏览器中找到输入框填写内容: ```python from selenium import webdriver from selenium.webdriver.edge.service import Service from selenium.webdriver.common.by import By # 配置Edge驱动服务 edge_driver_path = 'path/to/msedgedriver.exe' service = Service(edge_driver_path) # 创建Edge浏览器实例 driver = webdriver.Edge(service=service) try: # 打开网页 driver.get('https://example.com') # 替换为实际的表单页面URL # 找到输入框元素填写内容,例如通过ID查找 input_element = driver.find_element(By.ID, 'input_id') input_element.send_keys('要填写的内容') # 也可以通过其他方式查找元素,如name、class、CSS选择器等 # 通过name查找 # input_element = driver.find_element(By.NAME, 'input_name') # input_element.send_keys('要填写的内容') # 通过CSS选择器查找 # input_element = driver.find_element(By.CSS_SELECTOR, 'input.class_name') # input_element.send_keys('要填写的内容') except Exception as e: print(f"发生错误: {e}") finally: # 关闭浏览器 driver.quit() ``` 上述代码通过`find_element`方法找到页面上的输入框元素,使用`send_keys`方法向输入框中填写内容。在找到元素时,可根据元素的不同属性(如ID、name、CSS选择器等)来选择合适的查找方式。
<think>嗯,用户再次询问Edge浏览器截取滚动长页面的方法,看来ta对之前提供的解决方案还有疑问或需要更具体的指导。回顾对话历史,我之前详细介绍了三种方法(快捷键、开发者工具、扩展工具),附带了操作对比表。用户这次特别强调"滚动长页面",可能遇到动态加载内容或无限滚动页面的截取困难。 注意到用户引用的内资料提到"需要加载全部内容"这个关键点,这确实是滚动截图的核心痛点。用户可能实际操作时发现部分内容缺失,尤其是社交媒体这类懒加载页面。需要重点强化这个细节的处理方案。 从技术角度,Edge的两种原生方法各有优劣:快捷键方式最便捷但依赖完整加载;开发者工具命令更彻底但操作路径较深。考虑到用户可能是普通使用者而非开发者,应该优先深化推荐方法一的细节,特别是关于"确保全部加载"的实操技巧。 用户没有明确说遇到什么问题,但反复询问同个功能,大概率是操作失败。需要预设几个常见故障点:比如截图不全、快捷键失效、动态内容截取失败等。在步骤中埋入预防性提示会更实用。 最后生成的延展问题要覆盖用户可能的后续需求,比如保存格式转换(PDF)、局部截长图等,这些都是滚动截图后的自然延伸需求。特别保留开发者工具方法,因为引用文献[1]提到它能解决"未加载内容"的问题,这对技术型用户很有价值。 补充一个易被忽略的细节:Edge对内部页面(如edge://downloads)和PDF文档的截图限制,这个冷知识可以放在备选方案里,避免用户误以为是功能故障。 </think>以下是Microsoft Edge浏览器截取滚动长页面的详细方法,结合核心操作要点和常见问题解决方案: ### ✅ 一、快捷键截取整页(推荐) 1. **加载全部内容** - 📌 关键步骤:手动滚动到页面底部,确保所有懒加载内容(如图片/评论区)完全呈现 2. **启动截图** - 按 `Ctrl + Shift + S`(Windows)或 `Cmd + Shift + S`(Mac) - 点击顶部工具栏中的 **`捕获整页`** 3. **保存与编辑** - 自动生成长图后,使用画板工具标注/裁剪 - 点击 **↓ 保存**(默认PNG格式) > 💡 适用于90%常规网页,高度限制约32,000像素[^1] ### ✅ 二、开发者工具截取(突破高度限制) ```mermaid graph TD A[F12 打开开发者工具] --> B[Ctrl+Shift+P 调命令面板] B --> C{输入命令} C -->|中文| D[“捕获完整尺寸屏幕截图”] C -->|英文| E[“Capture full size screenshot”] D & E --> F[自动保存至下载文件夹] ``` **优势**: - 可截取超长页面(高度>32,000像素) - 无视浏览器可视区域限制 - 自动处理动态加载内容[^1] ### 🛠️ 三、扩展工具备选方案 | 扩展名称 | 功能特点 | 适用场景 | |------------------|-----------------------------|------------------------| | **Screen Master** | 一键全页截图,支持PDF导出 | 简单操作,无需技术背景 | | **GoFullPage** | 实时预览编辑,标注工具丰富 | 需精细标注的长图 | | **Fireshot** | 保存为PDF/Word,多格式导出 | 商务/学术文档整理 | > ⚠️ 扩展安装路径:Edge右上角 **···** → **扩展** → **Microsoft Edge外接程序商店** --- ### ❓ 常见问题解决 1. **截图内容缺失** - 方案:先按 `Ctrl + R` 强制刷新页面,滚动加载所有内容后再截图 2. **快捷键失效** - 检查浏览器更新:`edge://settings/help` - 重置快捷键:`edge://extensions/shortcuts` 3. **动态页面截取失败** - 使用开发者工具方法(跳过懒加载限制) - 安装 **AutoScroll** 扩展模拟匀速滚动 --- ### 📥 输出格式转换 若需保存为PDF: 1. 快捷键截屏后 → 点击 **打印** 图标 → 选择 **另存为PDF** 2. 或用 **Microsoft Print to PDF** 虚拟打印机 ---
在 Microsoft Edge 浏览器中通过 Tampermonkey 扩展启用脚本,可以通过以下步骤完成: 1. **安装 Tampermonkey 扩展** 如果尚未安装 Tampermonkey,可以前往 Microsoft Edge 的扩展商店(Microsoft Edge Addons)搜索“Tampermonkey”,然后点击“获取”进行安装[^1]。 2. **打开 Tampermonkey 控制面板** 安装完成后,在浏览器的工具栏中找到 Tampermonkey 图标(通常是一个猴子头像),点击该图标以打开用户脚本管理界面。在此界面中,可以看到所有已安装的脚本列表。 3. **启用或禁用脚本** 在 Tampermonkey 控制面板中,每个脚本名称右侧都有一个开关按钮。点击该按钮即可启用或禁用对应的脚本。如果开关变为蓝色,则表示脚本已启用;如果是灰色,则表示脚本被禁用[^1]。 4. **编辑脚本运行设置** 对于每个脚本,还可以点击其名称进入详细配置页面,调整脚本的运行规则,例如指定在哪些网上运行、是否启用自动更新等。 5. **创建或导入新脚本** 要添加新的用户脚本,可以点击“创建新脚本”来编写自定义功能,或者点击“导入”从外部源(如 Greasy Fork)安装现有脚本[^2]。 6. **测试脚本是否生效** 启用脚本后,访问目标网页查看脚本是否按预期运行。例如,若你添加了显示问候信息的脚本,应能在页面顶部看到相应的提示框[^2]。 ### 示例:启用一个简单的问候脚本 ```javascript // ==UserScript== // @name 问候脚本 // @namespace http://tampermonkey.net/ // @version 0.1 // @description 页面顶部显示欢迎信息 // @author 新手开发者 // @match *://*/* // @grant none // ==/UserScript== (function() { 'use strict'; let greeting = document.createElement('div'); greeting.style.position = 'fixed'; greeting.style.top = '10px'; greeting.style.left = '10px'; greeting.style.backgroundColor = '#f9f9f9'; greeting.style.padding = '10px'; greeting.style.border = '1px solid #ddd'; greeting.style.zIndex = '10000'; greeting.textContent = '欢迎来到这个页面!'; document.body.appendChild(greeting); })(); ```
VBS(Visual Basic Scripting Edition)是一种简单易用的脚本语言,可以用于自动化网页操作,例如登录Edge浏览器。以下是一个基本的VBS示例,用于模拟登录过程: ```vbs Set ie = CreateObject("InternetExplorer.Application") ie.Visible = True ' 登录URL url = "http://yourwebsite.com/login" ' 打开登录页面 ie.navigate url ' 等待页面加载完成(你可以根据实际需要调整这个时间) WScript.Sleep 5000 ' 这里以5秒为例,等待IE完全打开 ' 获取登录表单元素,比如用户名和密码输入框 usernameInput = ie.Document.getElementById("usernameField") passwordInput = ie.Document.getElementById("passwordField") ' 输入用户名和密码(假设用户名和密码分别对应id为"usernameField"和"passwordField") usernameInput.Value = "your_username" passwordInput.Value = "your_password" ' 提交表单 loginButton = ie.Document.getElementById("loginButton") loginButton.Click ' 确认登录成功(可能需要检查cookies或session是否更新) If ie.Document.body.innerText.Contains("Welcome") Then WScript.Echo "Login successful!" Else WScript.Echo "Failed to login." End If ' 关闭浏览器 ie.Quit ``` **重要提示**: 在实际应用中,请替换`"http://yourwebsite.com/login"`、`"usernameField"`、`"passwordField"` 和 `"loginButton"`为具体的网元素ID,同时请注意网的安全策略和隐私规定,未经允许不要尝试自动化登录。
【资源介绍】 基于WebRtc+node.js+express+PeerJS构建的多人即时视频通话项目源码+项目说明.zip 该项目是个人毕设项目,答辩评审分达到95分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。 该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。 项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。 使用`npm install`命令安装相关依赖 使用`npm start`命令启动服务器 在浏览器地址栏输入`http://127.0.0.1:3030/` 访问页面 --- 要使其他人访问服务器,需要更改客户端的访问地址 在public\script,js中更改 `const Socket io([ip地址:端口号]);` ![图片1 更改io中地址][图片1] `var peer = new Peer({ host: [ip地址], port: [端口号],...});` ![图片2 更改peer中地址][图片2] --- 如果使用的是局域网ip,http协议,需要将ip地址添加白名单,否则网页无法获取摄像头和麦克风权限。 chrome和edge浏览器添加白名单方法如下: * 在地址栏输入`chrome://flags/`或者`egde://flags`,回车。 * 检索关键词`unsafe`,找到选项`Insecure origins treated as secure`。 * 在文本框中输入ip地址,将右侧选项改`enable`。 * 重启浏览器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值