
前几天发过一个帖子,t/919776 征集到了一些工具和已有的在线服务,折腾下来都不满意,但是意外的发现了有专门做主要内容提取的前端库,比如 mozilla 的 readability 。
我首先排除了手动保存、异步抓去(登录态动态加载的会失败),然后排除本地方案,因为有多台设备
我会新建一个 github 组,用来放新写的代码,我也会把我已有的成果:webdav 、readability 封装开源出来,这些代码大概率需要重写。
做这些的初衷,就是想把浏览过的网页保存下来,方便以后万一需要再看(所以全文索引很重要),防止原地址失效,或者失去查看的权限和条件等。
希望不会被吐槽白嫖,以及需要征集项目和组名称。
1 iX8NEGGn 2023-03-03 20:53:23 +08:00 我也深度试用不止如下的项目: ArchiveBox 、DiskerNet 、hunchly 、singleFile 、WAIL 、warcprox 、grab-site 、webscrapbook Webrecorder 家族的:pywb 、archiveweb.page 、browsertrix-crawler 、browsertrix-cloud 、Conifer 没有一个能完全满足需求,目前正在用自己魔改的 webscrapbook 苟且着 需求如下 自动保存: - 浏览过的页面 - 载入超过一定时间才保存页面(提供 delay 选项) - 提供自动删除 n 天前且不在书签中的页面的功能 - 书签 - 保存书签时自动保存页面 - 删除书签时自动删除保存的页面(或是继续保留,等过 n 天后删除?) - 提供 include 、exclude 规则,确定些页面需要保存,哪些不需要 搜索: - 根据网页标题搜索 - 根据网页 URL 搜索 - 全文搜索(只提取网页正文建立索引) - 搜索时可以根据添加时间限定等 其他: - 相同的 url ,间隔一定的天数才重新保存? - 相同的 url ,只有页面发送变化时才重新保存(如何认为页面发生变化?这很难判断) - 锚点不同的链接是否被认为是不同的 url ?: - 单页应用,不该被认为是相同的 url - 普通应用,应该被认为是相同的 url 从头实现起来可能难,建议站在巨人肩膀上,以 singleFile 或 webscrapbook 为基础,救命稻草就等着 OP 你了 |
2 FrankAdler OP @iX8NEGGn 你折腾过的比我还多,想法也比我多,真希望你能参与进来 |
3 hamsterbase 2023-03-03 21:16:03 +08:00 试试看 hamsterbase ? 1. 本地部署,功能完全离线。 数据完全在本地。 2. 支持 API 、有开源的 SDK 3. 支持集成 singilefile 。 4. 支持批注、导出批注到 logseq 和 obsidian 5. 支持全文搜索。(基于 sqlite ) 7. 提供 mac 、windows 、linux 桌面端、linux 服务端。 所有端之间点对点同步。支持离线独立运行。 |
4 hamsterbase 2023-03-03 21:24:28 +08:00 8 同时支持 singlefile 、webarchive 、mhtml 。 支持自动导入功能 9 支持暗黑模式。 暗黑模式下,网页自动暗黑。 10. 保存网页快照以后,支持解析出 title 、url ,文件大小。 11. 支持标签。已读未读、喜欢。 12. 按照 标签、导入时间、批注数、阅读状态、域名,是否喜欢 来筛选页面。 组合不同的筛选条件。 13. 筛选页面后,支持通过 rss 输出页面,集成 readability 。 下面是画饼阶段,马上会发布。 1. 开源的 chrome 插件, 支持直接在浏览器里批注,批注后自动保存快照(集成 singlefile )。 刷新页面后批注保留。 2. 支持把 webdav 作为后端,加密后同步 3. 独立运行的 iOS 、安卓客户端。(在 iOS 和 安卓里跑 nodejs ) 4. docker 版适配 iOS 、安卓。 |
5 iX8NEGGn 2023-03-03 21:26:12 +08:00 @FrankAdler 奈何我只会点 JAVA ,Go 和 Js 技术不允许呀。 @hamsterbase 主要是想做浏览器无感保存,而不是手动添加网址或内容,如果能做到这一点就好了,大佬你的项目有这个功能吗? |
6 hamsterbase 2023-03-03 21:27:41 +08:00 @iX8NEGGn 有啊, 绑定 singilefile 就好了。 singilefile 本身自带保存功能。 文档在这里 https://hamsterbase.com/zh/docs/integrations/singlefile.html |
7 iX8NEGGn 2023-03-03 21:28:57 +08:00 @hamsterbase 我这就去深度体验 |
8 danbai PRO 之前用浏览器插件实现了一个自动保存到服务端建立索引 |
9 FrankAdler OP @hamsterbase 你这个是闭源的?可惜了 |
10 ChinaCN 2023-03-03 22:44:48 +08:00 码住,我也想要一个无感保存的,收藏夹已经有几千个网址了,都不知道我想要的东西在哪里了 |
12 bjzhush 2023-03-03 22:54:01 +08:00 有过类似想法,简单说说 如果所有浏览记录都保存了,那么搜索记录也就在里面了,简单匹配下就能匹配出来。 目前我是通过 Export Chrome History 这个 chrome 插件,每 80 多天把所有浏览记录导出一次( chrome 本地最长保存 90 天的浏览记录) 另外云端 google 也有记录,在 https://myactivity.google.com/myactivity?pli=1 Google 数据都是可以导出的,这个应该也是可以导出的,不过好像不是那么全 |
13 woyaojizhu8 2023-03-04 11:24:15 +08:00 recoll 是一个本地全文搜索工具,它可以保存浏览历史记录,可以对浏览过的网页进行全文搜索。关键它将历史记录全文搜索集成到桌面搜索中了。 |
14 woyaojizhu8 2023-03-04 12:26:15 +08:00 @iX8NEGGn 请问你魔改的 webscrapbook 实现了你所说的所有需求了吗? |
15 woyaojizhu8 2023-03-04 13:10:04 +08:00 @FrankAdler #2 是不是在 github 上建一个项目会更有条理,更利于合作 |
16 iX8NEGGn 2023-03-04 13:18:10 +08:00 @woyaojizhu8 虽然功能上差不多能满足,但做法并不优雅,且它还带有网页标记等功能,项目挺复杂的,继续改成我想要的样子可能比我重新写一个后端配合上 SingleFile 还要难,所以并不打算继续弄下去,还在等替代品。 |
17 woyaojizhu8 2023-03-04 13:37:54 +08:00 @iX8NEGGn 搜索需求用 recoll+webscrapbook 可以实现。webscrapbook 包括网页标题 网页 url 等元数据。而 recoll 经过配置可以索引这些元数据。自动保存的话 ,大概只能魔改 webscrapbook ? |
18 iX8NEGGn 2023-03-04 13:52:45 +08:00 @woyaojizhu8 想要的是一个优雅的 All In One 程序,包括自带搜索功能,直接提供一个友好 Http 界面,而不需要启动其他程序,其实 webscrapbook 已经提供搜索功能且提供 Http 界面,但是它直接把提取的网页 content 记录在一个 Js 文件内,我不知道它是否有算法加持来执行全文搜索,还是直接暴力匹配,如果数据量大了不知道它是否还能支撑起来。 |
19 xiguaprince 2023-03-04 13:53:21 +08:00 via iPhone 嗯…我已经做了个自用的这种小工具… |
20 woyaojizhu8 2023-03-04 13:56:45 +08:00 @xiguaprince 能分享下工具吗 |
21 woyaojizhu8 2023-03-04 13:57:37 +08:00 @iX8NEGGn 所以我的建议是用 recoll 来索引搜索,webscrapbook 仅保存 |
22 iX8NEGGn 2023-03-04 14:07:58 +08:00 @woyaojizhu8 仅保存的话 SingleFile 也能满足,但是多个不相干的软件配合使用,有割裂感。 而且还要整合管理功能才行,比如自动删除问题、重复页面问题,搜索到结果后点一下能直接看到带有 CSS 的原始页面,而不需要手动点击打开 Html 文件。 |
23 woyaojizhu8 2023-03-04 15:13:28 +08:00 @iX8NEGGn 不太可能有刚好符合你要求的软件,功能对于你的需求来说不多不少刚刚好,除非这软件是你自己写的。但是如果对于自己的各种需求都自己造轮子,那这工作量也太大了,所以用各种软件来组合是最好的,即使它们多出一些用不到的功能,甚至用不到的功能比用得到的功能还多,我觉得也不是啥大问题。而 recoll 跟 webscrapbook 配合,使用割裂感我感觉是比较弱的,或者说恰好在联系比较弱的两个功能模块(搜索跟保存)之间进行了割裂,分给了两个软件。 |
24 woyaojizhu8 2023-03-04 15:13:55 +08:00 @iX8NEGGn >搜索到结果后点一下能直接看到带有 CSS 的原始页面,而不需要手动点击打开 Html 文件。 没看懂,这是什么意思?这两者之间有什么区别? |
25 FrankAdler OP @woyaojizhu8 暂不考虑本地、单机的方案 |
26 FrankAdler OP >搜索到结果后点一下能直接看到带有 CSS 的原始页面,而不需要手动点击打开 Html 文件。 没看懂,这是什么意思?这两者之间有什么区别? 使用 readability 这类库,可以提取页面的主页内容,隐藏其他的信息,比如对于现在这个帖子,导航、右侧、评论、底部注脚都可以剔除,只保留帖子内容这块,而且还有不太简陋的样式,适合预览 |
27 FrankAdler OP @woyaojizhu8 临时 新建了一个空项目,https://b64s.uk/.1N-MUXfbIS0dIN6Mz9obYSpeXJvZ29uM2iqd3SwdoluAX5obX5m 在有人参与讨论前,我先不动手编码,暂且继续保持自己的方案 |
28 xitler 2023-03-04 22:47:06 +08:00 听起来很有意思,前端和 chrome 插件或许可以帮忙 |
29 woyaojizhu8 2023-03-05 00:19:53 +08:00 @FrankAdler # 25 recoll 可以实现多机。recoll 装一台 Linux 机子上,其他机子只装 recoll 浏览器扩展,通过 recoll webui 访问搜索 |
30 FrankAdler OP @xitler 留个联系方式吧,或者加我 tg |
31 FrankAdler OP 目前跟一个前端小伙伴一起,打算先开始了,希望后续还有人加入进来 |
32 FrankAdler OP 已经有两个前端的小伙伴了 后端目前只有我自己 |
33 dannylin 2023-03-28 00:11:50 +08:00 我是剪簿( WebScrapBook ,WSB )的者,最近碰巧看到帖,也想法。 主提到的功能 WebScrapBook + PyWebScrapBook 足以解,因二者本就是集取、管理、加、索、跨置存取的方案: - 取:有 - 存到端伺服器:有 - 多存取:可以。能安 WSB 的器都可以存取;不能安的也可以透索引面存取,或透 Web 界面做有限度的。 - 全文索:可以。而且支援的索件相富,比如在任意一或多本剪簿中索、限定在任意多下索、RegExp 匹配索等等。 如果手上都是 SingleFile 取的,PyWSB 也提供命令列工具入到 WSB 。(:wsb convert file2wsb -h ) 便下存格式,在 WSB 的文件就有[分析]( https://github.com/danny0838/webscrapbook/wiki/FAQ-(zh_TW)#%E5%A6%82%E4%BD%95%E9%81%B8%E6%93%87%E6%93%B7%E5%8F%96%E7%B6%B2%E9%A0%81%E7%9A%84%E5%84%B2%E5%AD%98%E6%A0%BC%E5%BC%8F)。我人使用上乎都是取料包 HTML+源,只在少情使用一 HTML 或 MAFF 等格式,主要理由是: 1. 料放在伺服器上透器,形式效能最好。加、、回存、或全文索也是如此。(比如全文索引器只要爬 HTML 就好,一 HTML 案得的肥大 base64 料一起爬) 2. 最容易版控系整合。我可以不定把料 Git 版控,比差或原料。一 HTML 嵌太多可能是重的 base64 ,料肥,也不利差比。 3. 一 HTML 先天就法多互相的,所以像深取、合取都是只有 WSB 才支援的功能。 |
34 dannylin 2023-03-28 00:16:39 +08:00 至於 @iX8NEGGn 提到的: 1. 於全文索: 如前所述,全文索本就有提供,了支援面等相容性考量,目前是做成客端索,也就是要先下所有全文快取再始索。 至於料量很大的情,要看路和器。如果後端架在本地,一般不有太太;如果架在端,以目前的路件,下十 MB 的全文快取也不是太大。 作考,我人的一主要剪簿有 27 年的料, 3 千目,10 案,2.0GB ,全文快取 54MB 。伺服器架在端的情下,索不有太大的延( nginx 送全文快取料自,大概只剩 26MB 左右),手稍微慢些,不不在速,而在手理器的性能。 如果心下全文快取吃光流量,WSB 套件有提供限制快取大小的功能,行端可以拒入太大的全文快取(仍可以用、等其他件索)。 PyWSB 支援多剪簿,每剪簿都有立的快取。可以把常用料集中在本剪簿,不常用的放到其他本,平只在前者索,就可以小化入不必要的快取的效能。 未可能考做伺服端的全文索,客端就不必下整全文快取了。 如果有裕,或可能做支援 js 以外的全文索引格式,以付不同需求。 2. 於自取整合: 我人很少用自取,因差取的面作用不大,大多料都不用到,徒然影效能和空;而 Web 用如 SNS ,也很用自取抓到想要的容。但如果要用,可以定取到立的剪簿,和常用料分,把干到最小。 整合也是。就我人的使用方式而言,通常是用於某些常去的「站」,而剪簿是「」,者本上就不同,也就不生既要加又取的情。而於想著的「」,WSB 也有取成目的功能。 我人法理解什要既加又自取,要除後同步除取?那和直接取用特定剪簿/料分有何? 法理解的需求,我大概也不不考做。如果真的想做,可以考成另一器套件,以便提供器整合,也可以透 external message 接入 WSB 套件和 PyWSB 做到自取。 至於像自除料之的功能,可另套件接入 PyWSB 理。或者也可以考成 cron job 。 未 PyWSB 可能做剪簿 CRUD 的 Python 模、命令列、及 web API 接口。到第三方工具更方便。 是,但在有太多工作,做那些可能是很久以後了。如有高手感趣,倒是迎加入行列。 |
35 FrankAdler OP @dannylin 我会深入调研下 WebScrapBook 这个项目,6 年+的项目了还在维护,佩服 |
36 FrankAdler OP @dannylin 感觉我想做的和你说的不太一样,我其实是想放弃书签,然后无差别的记录(会个别性的排除某些域名,singlefile 有这个功能,虽然不太好用),等以后想起来需要的时候,直接用关键词搜索,我看了下现有的数据,每天大概 200-300 个左右的 html 文件产生,差不多每个月 5G 左右的数据量,每个文件在 1M 以下,个别因为有图片会比较大,可能需要将来想办法处理掉。 然后搜索,我是寄希望于类似 ES ,甚至 Google 、Baidu 这样的完整的搜索引擎,数据在远端,本地像浏览网页一样的,搜到相关内容,点击查看原始网页(内容可能更新或失效了)或者查看当时保存下来的单体 html |
37 iX8NEGGn 2023-03-28 03:29:08 +08:00 @dannylin “我人法理解什要既加又自取,要除後同步除取?那和直接取用特定剪簿/料分有何?” 之所以有这样的需求,是因为网页是我主要学习来源,我学习一个东西一般要学透,可能会打开几百甚至几千个网页,而且一开打就是几周甚至几个月,直到我学透并把所有的知识消化整理成我的笔记。 但有时,我不得不放下当前的学习去做其他的事情,因此我会一键收藏所有打开的页面到书签,可能会很长时间后我才能重新回来,但常常发现书签中的链接 404 了,这非常的难受,因为有些知识是我已经消化过了的,只是没来得及做笔记。 如果浏览的时候自取了,一键收藏所有打开的页面到书签时就不会有太大的压力,而且浏览时取的成功比较高,那些自取的网页经过一段时间后如果没有被收藏到书签,那么就应该把它们删除。当我把知识整理成我的笔记后,书签就没有用了,删除书签时应该把取的网页也删除。 |
38 dannylin 2023-03-28 08:20:32 +08:00 @iX8NEGGn 原如此,你的想法相於做特定,的是我不太可能去需求做的。 如果要用比符合目前框架下的做法,你可以考做: 1. 定自取的面一存到特定剪簿 X 。 2. 把「一收藏到」改成「一取 WebScrapBook 」,假取到特定剪簿 Y 。 3. 一 cron tab 本,以一定率(例如每天)行: (1) 定所有剪簿 (2) 查 X 的每料,若建立超 n 天,且在 X 以外的剪簿中有相同源址的目,就除。 (3) 解 cron tab 本建用 Python ,可以一定程度上用 PyWSB 有的 API 。 |
39 iX8NEGGn 2023-03-28 11:07:32 +08:00 via iPhone @dannylin 保存书签时自动取,我简单修改 WebScrapBook 很容易就做到了,只需监听 bookmark create 事件,然后调用已有函数。 至于删除,PyWSB 比较复杂,我无从下手,我非常暴力的直接读取谷歌浏览器书签文件和 PyWSB 生成的 js 文件进行对比,然后删除网页文件以及重新生成 js 内容。 经过这两步操作,几乎满足了我的所有需求,还有一个没满足就是:“相同的 url ,间隔一定的天数才重新保存”,好像 WebScrapBook 在检查规则的 duplicate 时 PyWSB 没有返回创建时间相关信息,所以我无法做到,您是否考虑添加这个功能?或者能否告诉我后端该修改哪里? 最后感谢大佬开源了这么优秀的项目,同时期待 PyWSB 后端做全文搜索以及提供 CRUD 的 API 的那一天。 |
40 dannylin 2023-03-28 22:20:43 +08:00 @iX8NEGGn 魔改套件是你的利,不自套件在安使用上可能遇到署、上架之的麻;而官方套件更新後要同步跟也比麻。一般是比推模式:(1)推官做;(2)另外做一自套件介接。然,後者可能也需要不少和妥,最後是看你的意。如果你意,或可以把程式也源出及到我的 issue tracker ,我在考是否增加新功能或提供更多套件介接用 API 也比有西可以考。 於「相同 URL 若隔一段後允重取」,目前有做。初自取功能是考版 ScrapBook AutoSave Add-on ,有考更多可能的件,要把些考去,不做一番魔改看起不太可能。其初我就很豫是否要建自取,也最是提供更多 API ,然後像版 ScrapBook 一把自取功能整立成另一套件比合吧。XD |
41 dannylin 2023-05-01 00:43:13 +08:00 @iX8NEGGn 更新一下。目前已初步完成 WebScrapBook/PyWebScrapBook 2.0 版,主要支援伺服端搜及改料方式,也提供了不少新 API 。有趣相串: https://github.com/danny0838/PyWebScrapBook/issues/65 |
43 Jzdoxc 2023-05-21 13:54:08 +08:00 挺有意思的,毕竟互联网的信息也许会被删除掉,能够本地保存一下十分有必要的 还有仓库的短链地址过期了,能再给个链接吗,我 star 关注一下 |
44 FrankAdler OP @Jzdoxc 惭愧,因为事多,所以进度比较缓慢,等架子完全搭起来应该就会加快了: https://b64s.uk/.1n.5ns6bIS0dIN6Mz9obYSpeXJvZ29uM2iqd3SwdoluAX5obX5m |
45 zsxing5566566 2023-10-21 20:54:27 +08:00 大佬。进展如何?我一直用 archivebox ,但是这个好像没有用户名验证。部署在 vps 之后。大家都可以访问。数据也是一个问题。几百个网页之后,数据以 GB 计算。数据保存也是个问题。最大的问题就是索引了。好像有一些开源的搜索引擎 zincsearch 之类可以使用。 数据保存之后用 zincsearch 之类的搜索引擎分析数据是可行的么? 能在必要的网页文件上做注释么? 大佬?能再发下群?好像链接都失效了? |
46 FrankAdler OP @zsxing5566566 后端部分进度差不多 50%吧,前端部分进度 0%,说帮忙做前端的 v 友近期有点忙,我又不太熟。 |
47 zsxing5566566 2023-10-22 20:02:27 +08:00 大佬发下链接? |
48 FrankAdler OP |
49 AppServes 2024-03-08 11:38:45 +08:00 @FrankAdler 大佬,再更新下链接? 失效了哇 |
50 Jzdoxc 2024-03-20 17:25:21 +08:00 我想参与这个项目,可以做一些后端部分的工作 |
51 FrankAdler OP |
52 Jzdoxc 2024-03-20 22:37:28 +08:00 提了一个 PR ,up 有时间看看呢,顺便方便的话,留个 tg 联系方式或者群组链接 |
53 FrankAdler OP @Jzdoxc 看到了,pr 有点大啊,我 tg https://b64s.uk/.15!wQv8jQA0lQV6Uh90Uv1uU0WhIFAymMDg |
54 AppServes 2024-04-12 22:21:04 +08:00 @FrankAdler 最近没上线,链接还是失效了,可以更新一下吗,麻烦了。 |
55 AppServes 2024-05-06 00:19:59 +08:00 @FrankAdler 上次看就是过期的了,最近一直在线,方便再更新下吗 |
56 FrankAdler OP |
57 AppServes 2024-05-07 00:07:30 +08:00 @FrankAdler OK ,看到了 |
58 mrzhu 2024-05-12 14:49:52 +08:00 @hamsterbase #6 官网没写购买后的高级功能是什么?最好写一下吧,哪些功能是免费,哪些需要付费 |
59 cyoking 2024-09-29 17:08:06 +08:00 有最新的 github 地址么 |
60 FrankAdler OP |