关于在线词典制作

对于一些 懒得爬 / 不好爬 / 经常更新 的网站(词典、百科、等等),我希望能在线访问他们,对查询的任何内容在网站上搜索,有词条自动显示,没词条就显示搜索页。
后者很好实现,但是前者我想不到怎么做,MDX 能做到把所有内容都转发给同一套 HTML 吗,如果一定要我手动对应词头和网址,一是无意义的重复内容(写程序的最洁癖这个了),二是做起来麻烦,最关键的是要求我要有该网站的词表,如果我已经有词表了我干嘛不直接整个爬下来,况且词表也会变化,这样在线的意义就变小了。

1 个赞

GoldenDict 上可以调Python脚本实现,查词的过程就是 request 网页的过程,按设计的解析呈现出来。pda 有几个应用案例,你可以去了解下。

1 个赞

这是我最想要、最想写的词典软件。输入关键词,下载特定网页,检查是否有实际内容,有的话,依设定部分显示。

GoldenDict 就算了,它不是合格的浏览器。

1 个赞

词典软件自己提供在线词典的功能,不够自由,提供python集成的话,体积又太大。ios上集成python,包体积会增加50m,android端应该也类似。像沙拉查词那样,用javascript实现,苹果这边的浏览器又完全不支持。顾虑非常多。

是这样的吗

1 个赞

你说的是不是象超微浏览器
https://jamesfengcao.gitee.io/uwebzh/searchurl/search

2 个赞

javascript 作为一门有统一标准的语言应该没有不支持苹果的说法吧,Safari 的 js 引擎和别的 js 引擎的差别应该没有大到那种程度。

意思是由脚本直接接收检索的字段吗,听起来是挺符合需求的,不过好像被限定在PC端+GoldenDict了。
我是希望能做得通用一点,起码手机得能支持。
词典里本身是能直接调 JS 直接处理 DOM 的,主要的困难还是怎么把任意内容都转发给词典处理。
总不能搞一个假的词库出来硬撞吧。

前面没说清楚,开发沙拉查词类似的Javascript查词方案需要使用浏览器扩展WebExtensions里的接口,Safari去年底才开放这类接口,开发插件需要这个,之前的系统都不支持,iOS端只有最新的15才支持。

3 个赞

如果你只是说浏览器扩展的话,可能确实像你说的哪样,但是 js 可以存在在很多地方,整个 MDict 生态都是构建在网页技术上的,软件开发者和词典制作者都可以随便用 js 不论平台。

还有对于软件大小,我不确定在这年头对用户还算不算问题,安卓的词典软件可以借用系统提供的 WebView 来渲染 HTML 和跑 js,本体可以达到非常轻量的程度,不知道苹果有没有类似的东西,但不管怎么样像 CEF 和 Electron 都是支持 Mac 和 iOS 的,不知道现有的苹果词典软件是用的哪些。

1 个赞

苹果禁止第三方浏览器的内核在iOS上跑,底层只能使用WebKit,19年之前是这样,现在苹果应用商店的政策有没有更新不清楚。

直接在网页上查词会有同源问题,使用浏览器提供的Javascript扩展里的接口去查词可以避免这类问题(只需要加权限)。

你说得对,我没去考虑跨域的问题。不过我一开始想的是,按平常爬虫的做法,直接请求然后手撕HTML最后显示。浏览器扩展就是相当于开一个新的标签页吗?可以说成本低了一点吧。但是如果能操作到浏览器引擎的话,应该已经能管理标签页了吧?

这个我不知道,不懂苹果,iOS 有什么词典软件吗?欧路?

浏览器扩展是浏览器对外提供它底层的接口,这些接口可以管理浏览器内部功能,可以与web前端交互,可以对外跨域访问,沙拉查词就是用这些接口实现的。

iOS上的所有软件,包括词典软件都是强制使用的WebKit,欧路物书堂MDict都是。好像Chrome在iOS上也是使用的WebKit,没有用它自家的Blink,不是很确定,但看苹果应用商店的政策还是这样规定的。software-requirements

Apps that browse the web must use the appropriate WebKit framework and WebKit Javascript.