实测手记:baidu-wenku 脚本 3 步免费提取百度文库全文并保存为 PDF
2026/8/31 16:06:54 网站建设 项目流程

实测手记:baidu-wenku 脚本 3 步免费提取百度文库全文并保存为 PDF

【免费下载链接】baidu-wenkufetch the document for free项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wenku

baidu-wenku 是一个只有一百多行的纯前端 JavaScript 脚本,专门用来清理百度文库文档页面的广告、付费提示和冗余元素,让整篇文档能用 Ctrl+P 直接免费保存为 PDF。这篇实测手记不讲官方文档,只讲我 clone 下来后真实跑通的路径、调过的参数,以及三个差点让我放弃的时刻。

先说结论:3 步、2 个参数、1 个硬前提

如果你赶时间,先记住这组数字——

  • 3 步:clone 脚本 → 打开wenku.baidu.com/view/*格式的文档页 → 控制台粘贴执行;
  • 2 个参数:滚动间隔waitTime4Scroll(默认 800ms)和纸张间距margin4ReaderPage(默认"-75px auto"),都写在文件开头,改完即生效;
  • 1 个硬前提:页面 URL 必须是文库的阅读页。在搜索结果页或首页粘贴,脚本不会有任何反应——别问我是怎么知道的。

以我实测的那份 30 页行业报告为例:执行后约 1 分钟完成全部内容的滚动加载,再过 2 秒自动弹出打印窗口,选"另存为 PDF"就收工了。全程零安装、零依赖,适合偶尔需要把一两篇文库文档存成本地文件的个人用户。

我为什么要折腾这件事

上周五加班到深夜,我赶一份行业报告,能搜到的完整版本就挂在百度文库上。前面几页预览还能翻,往后全是下载券和会员解锁的提示。那晚我的心情大概可以概括成一句话:付费不划算,截图截不动,弹窗关不完

我需要的其实很简单——偶尔遇到一篇要完整读的文库文档,能干干净净地存到本地。就这么点需求,折腾了我一个多小时。

对比:我试过的四种办法和它们的下场

在找到 baidu-wenku 之前,我把市面上常见路子全走了一遍:

方案优点实际下场
浏览器截图 / 长截图零门槛二十多页截到怀疑人生,还经常断页、文字发虚
第三方"文库下载器"看上去省事装回来一窝捆绑软件,文档质量还一塌糊涂
注册会员 / 买下载券官方合法偶尔用一次,充会员纯属浪费
控制台粘贴脚本(本项目)免费、干净、即时生效需要动手执行一次,其余全程自动

说实话,我一开始对"往控制台里粘脚本"也心存警惕——万一是偷数据的呢?把index.js逐行读完才放心:它只做页面层面的清理和滚动加载,不发起任何网络请求,也不改动文档内容,风险最小。

完整提取步骤:从 clone 到打印出 PDF

下面按我实际操作顺序整理成四步,每一步都附上注意点。

  1. 把脚本拿到本地。打开终端执行克隆命令:
git clone https://gitcode.com/gh_mirrors/ba/baidu-wenku

克隆完进入项目目录,整个工具的核心就一份index.js,一百多行,建议先打开浏览一遍,心里有个数。

  1. 打开目标文档页面。访问百度文库,打开你想提取的文档。⚠️ 先确认地址栏是wenku.baidu.com/view/xxxx这种格式,这是脚本的匹配范围,格式不对后面全白搭。

  2. 在控制台粘贴执行。按F12打开开发者工具 → 切到"控制台"(Console)→ 全选复制index.js的内容粘贴进去 → 回车。之后不用你做任何事:干扰元素被清理、页面开始逐屏滚动、版式被重新整理、打印窗口自动弹出。

  3. 保存成果。在打印窗口把目标打印机选成"另存为 PDF"即可;也可以直接取消打印,把网页另存为 mhtml 格式,内容同样完整保留。

小提示:脚本用的是 jQuery 选择器,文库阅读页本身已加载 jQuery,所以粘贴即用,不用额外引入任何库。

脚本内部:几个"不讲武德"的小设计

把源码读完,我发现它解决麻烦的方式相当讨巧:

  • 先点"继续阅读":开头就模拟点击.goBtn.read-all,把折叠区域先释放出来;
  • 隐藏而非删除:对.aside这类元素用hide()而不是remove()——因为滚动时页面会动态重建节点,硬删会反复报Uncaught TypeError: Cannot read property 'top' of undefined
  • 重写删除逻辑:它甚至直接接管了 jQuery 的remove()方法、让它返回false,防止页面在滚动时把已加载的内容又删掉;
  • 模拟滚动加载:用定时器每隔waitTime4Scroll毫秒下滚 700 像素,把需要"继续阅读"才出现的内容全部加载出来;
  • 抢救打印样式:文库打印 CSS 里有@media print{body{display:none}},脚本在滚动完成后强制把body设回display:block,两秒后再弹出打印窗口,避免打出白纸。

一句话概括它的哲学:不改内容,只清干扰、加载全、理顺版式,剩下的交给浏览器自带的打印功能。

两个可调参数:我的实测调参记录

配置区就两个变量,全在文件开头的 Config 段落里:

var waitTime4Scroll = 800; // 模拟向下滚动的间隔,单位毫秒 var margin4ReaderPage = "-75px auto"; // 打印时的纸张间距

waitTime4Scroll,滚动间隔,默认 800(毫秒)

它决定滚动加载的节奏,直接关系加载完整度和耗时:数值偏大加载更稳但更慢,偏小更快但可能跳过未加载的章节。我的实测结论是:50 页以内的文档保持 800 即可;更长的文档或网络较慢时,调到 1200 左右更稳。我试过一份 80 页的,默认值下中间缺了两节,调到 1200 后一次过。

margin4ReaderPage,纸张间距,默认"-75px auto"

它控制打印时页与页之间的间距:绝对值过大页面可能显示不全、内容被裁;过小则纸张之间留白太多、浪费纸面。多数文档用默认值就合适,只有当你打出来发现"每页被切了一半"或"大片空白"时,再小幅微调,配合打印对话框里的缩放比例一起调。

踩坑实录:3 个差点让我放弃的报错时刻

实测中我翻了三次车,记录在案:

翻车一:脚本执行后页面毫无反应。排查顺序:先看 URL 是不是view/*格式 → 再看控制台有没有红色报错 → 刷新页面重新执行。九成问题出在前两步。

翻车二:保存的 PDF 内容不完整,中间缺页。基本都是滚动太快、内容没来得及加载。把waitTime4Scroll调大再跑一遍,或者先手动往下滚几屏触发加载后再执行脚本,都能缓解。

翻车三:打印预览里页面显示不全或留白过多。这是margin4ReaderPage没配好。微调数值,配合打印对话框的缩放比例和纸张尺寸一起调整,通常一两轮就调到满意。

问题速查表:照着这个表基本不用再问

问题回答
要装依赖或插件吗?零依赖,控制台粘进去就能跑
脚本会动文档内容吗?只隐藏和移除页面元素,不改动文档正文
Chrome、Edge 能用吗?凡带开发者工具的主流浏览器都能跑
想一次提取好几篇怎么办?多开标签页,每页各自执行一次
最后能存成什么格式?PDF(打印另存)或 mhtml(网页另存)
能批量下载整个文库吗?别想,只适合个人少量文档的临时保存
能解锁真正付费的章节吗?不能,它只把页面允许加载的内容完整呈现,付费墙不在脚本职责内

最后聊聊边界:什么它能做,什么它不该做

一整天实测下来,我给 baidu-wenku 的评价是六个字:轻、快、稳、边界清楚。它不解决批量搬运,也不承诺绕过付费墙,它只解决一个朴素需求——偶尔遇到一篇需要完整阅读的文库文档,能体面地存到本地。

说白了,它替我解决的是"读得下去"的问题;至于读完之后能想明白什么,那是任何脚本都替不了我的部分。如果你正被文库的付费提示和弹窗劝退,按上面的四步试一次,全程不超过十分钟。

最后留个问题给你:如果换成你,最近一次被文库付费提示劝退的是哪份材料?跑通之后,欢迎回来聊聊你的结果。

【免费下载链接】baidu-wenkufetch the document for free项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wenku

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询