# 词库制作学习简记

**URL:** <https://forum.freemdict.com/t/topic/4146>\
**Category:** 技术交流与词典编修\
**Tags:** 词库制作\
**Created:** [2020 年11 月 22 日 11:03 UTC](https://forum.freemdict.com/t/topic/4146 "2020-11-22T11:03:05Z")\
**Posts on this page:** 19\
**Page:** 1

<div class="post-metadata">

作者： ![Arlin](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/a/82dd89/32.png) [@Arlin](https://forum.freemdict.com/u/Arlin)\
发布日期： [2020 年11 月 22 日 11:03 UTC](https://forum.freemdict.com/t/topic/4146/1 "2020-11-22T11:03:05Z")

</div>

**① 装修 \> ② 改版 \> ③ 转制 \> ④ 自制**

**① [装修阶段](https://forum.freemdict.com/t/topic/2311)：**

- 在菜鸟联盟学习 css (选择器) 和 html 的相关知识，为改版打基础。
- 看词库制作交流区的 css 教程，不懂的 Google 之。
- **仿写** 。比如：鼠标经过时高亮当行中的关键词 (Collins Cobuild) 、仅一条数据时伪元素不计数 (新世纪英汉大词典)、利用 font-size=0 隐藏文本 (文馨英汉词典)。如今 mmmc 小姐姐的作品是很好的材料。

**② [改版阶段](https://forum.freemdict.com/t/topic/614)：**

- 简单替换、词条排序、合并词头 (OCD)。
- 小词典合并 (Mdict Editor Tool)。
- **拆包** 典型词典，学习图片缩放 (WBD)、双解切换、例句收展、词性跳转 (L5++)、内容收展 (Cambridge4)、繁简切换 (OALD8)、导航 (mw2018)、在线发音 (Collins) 等。
- 学习词组提取。补充 read、write、BeautifulSoup、for、if 等基础知识 (MBD)。
- 批量替换文本（韦氏高阶英汉双解词典）。
- [小坑](https://forum.freemdict.com/t/topic/455): 跳转链接中的 ? 要替换为 %3f ,半角双引号替换为%22，用 @@@ LINK 时词头的全角引号要替换为半角；以 - 开头的词头无法用 @@@ LINK 跳转…

**③ 转制阶段:**

- 转换格式 (pyglossary)
- epub转制（递归读取文件、根据字典批量替换文本以修复跳转）

**④ 自制阶段：**

- 切图：学切词，用 vim 和 python 删除特定行以实现高亮 (vim 会有多余空行，python 没有)。学习粗略定位版词典的制作（VimVim 之 [MdxSourceBuilder](https://forum.freemdict.com/t/topic/2882)）
- 爬虫：先学 hua 的 python 词库制作基础课程，上菜鸟联盟解惑，谷歌案例。

| | 词典 | 知识点 |
| --- | --- | --- |
| ① | [Green’s Dictionary of Slang](https://forum.freemdict.com/t/topic/1294) | 两个 for 循环获取索引 |
| ② | [Oxford Living Dictionaries 增补](https://forum.freemdict.com/t/topic/1833) | BeautifulSoup 之 append, insert, new tag 等 |
| ③ | [Dictionary](https://forum.freemdict.com/t/topic/3856) | 获取页码构造 url ；异常处理 |
| ④ | [林语堂当代汉英](https://forum.freemdict.com/t/topic/3856) | SSL 认证及频繁报错问题；中文乱码、编码；Request URL 不完整；html 解析器的选择（请求到的页面结构与 chrome 中显示的不同、网页错误导致词条最终非标准三行）；无标签的词组提取 (正则、split) |
| ⑤ | [The Free Dictionary](https://forum.freemdict.com/t/topic/3489) | 获取动态索引(借鉴 loner 利用临时文件中转爬取 WRC 的代码；修改为循环读取最后一行)；获取js翻页内容；代理池（了解反爬与反反爬）；字符串去重排序；词头中的转义字符处理 |
| ⑥ | [Merriam-Webster](https://forum.freemdict.com/t/topic/3856) | 异步请求 (json) |
| ⑦ | [Macmillan](https://forum.freemdict.com/t/topic/3856) | crawlspider（没学完，因为后来发现不需要逐层提取链接）；利用 request 获取重定向网址的正确链接以修复内部跳转； 嫁接和反查尝试 |
| ⑧ | [Thesaurus](https://forum.freemdict.com/t/topic/4011) | json to html；多重排序 |
| ⑨ | [中華語文大辭典](https://www.pdawiki.com/forum/thread-42315-1-1.html) | json to html；Excel to json；Excel 之 VBA 替换不可见的换行符 |

  加了下划线的都求助过，非常感谢各位耐心解答。又双叒叕 get 新技能~

—— 路漫漫其修远兮 ——

---

<div class="post-metadata">

作者： ![First\_Last](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/first_last/32/5_2.png) [@First\_Last](https://forum.freemdict.com/u/First_Last)\
发布日期： [2020 年11 月 22 日 11:45 UTC](https://forum.freemdict.com/t/topic/4146/2 "2020-11-22T11:45:30Z")

</div>

我是 1 → 3，接下來試著作圖片辭典吧。

---

<div class="post-metadata">

作者： ![lurker](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/lurker/32/16016_2.png) [@lurker](https://forum.freemdict.com/u/lurker)\
发布日期： [2020 年11 月 22 日 11:47 UTC](https://forum.freemdict.com/t/topic/4146/3 "2020-11-22T11:47:24Z")

</div>

好像是cmmm老姐。

这份笔记提到的大多数点，对我来说都是新知识。回看自己摸索、制作mdx的历程，一方面觉得走的弯路实在太多了，一方面又觉得在当时那种情况，能费时费力，做出一份错漏百出但堪堪能用的mdx来，其实也还行啦。人家发火箭上天都可以“快速试错”，做区区mdx难道不可以？另，我开始意识到“信息管理”的重要性。有用的信息太多了，怎么把它们搜集起来，按需求编排好，是件难事。

---

<div class="post-metadata">

作者： ![Arlin](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/a/82dd89/32.png) [@Arlin](https://forum.freemdict.com/u/Arlin)\
发布日期： [2020 年11 月 22 日 11:50 UTC](https://forum.freemdict.com/t/topic/4146/4 "2020-11-22T11:50:06Z")

</div>

随心，慢慢来~

---

<div class="post-metadata">

作者： ![Arlin](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/a/82dd89/32.png) [@Arlin](https://forum.freemdict.com/u/Arlin)\
发布日期： [2020 年11 月 22 日 11:57 UTC](https://forum.freemdict.com/t/topic/4146/5 "2020-11-22T11:57:33Z")

</div>

呀，不同平台顺序有些不一样~  
该踩的坑，该走的弯路一个不会少的。  
至于“信息管理”，我会把谷歌到的知识点分类加书签，有空再把内容汇总到笔记本。

---

<div class="post-metadata">

作者： ![hua](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/hua/32/11090_2.png) [@hua](https://forum.freemdict.com/u/hua)\
发布日期： [2020 年11 月 22 日 12:02 UTC](https://forum.freemdict.com/t/topic/4146/6 "2020-11-22T12:02:18Z")

</div>

不是有用的太多，而是你要清楚你要做什么。

> 乱花渐欲迷人眼，专注才能做词典。——鲁迅

你就只看 runoob，和 必要 python 库的 **中文文档** 就足够了，英文文档也行，只要你能读得快。这两个资料来源，对于做词典绰绰有余。

---

<div class="post-metadata">

作者： ![hua](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/hua/32/11090_2.png) [@hua](https://forum.freemdict.com/u/hua)\
发布日期： [2020 年11 月 22 日 12:05 UTC](https://forum.freemdict.com/t/topic/4146/7 "2020-11-22T12:05:33Z")

</div>



---

<div class="post-metadata">

作者： ![endnote](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/e/9de0a6/32.png) [@endnote](https://forum.freemdict.com/u/endnote)\
发布日期： [2020 年11 月 23 日 04:17 UTC](https://forum.freemdict.com/t/topic/4146/8 "2020-11-23T04:17:22Z")

</div>

> [@lurker](#):
>
> 走的弯路实在太多了

学习过程本来就是 try and error.

非要找原因的话，还是各种知识点太过于分散，导致各种大大小小的坑都避不开。

楼主这样的总结，就是给后来者的指南。

---

<div class="post-metadata">

作者： ![lurker](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/lurker/32/16016_2.png) [@lurker](https://forum.freemdict.com/u/lurker)\
发布日期： [2020 年11 月 23 日 09:42 UTC](https://forum.freemdict.com/t/topic/4146/9 "2020-11-23T09:42:32Z")

</div>

中文文档质量是没法保证的，比如下面这个：

> Tag.unwrap() 方法与 wrap() 方法相反.将移除tag内的所有tag标签,该方法常被用来进行标记的解包:

> Tag.unwrap() is the opposite of wrap(). It replaces a tag with whatever’s inside that tag. It’s good for stripping out markup:

---

<div class="post-metadata">

作者： ![First\_Last](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/first_last/32/5_2.png) [@First\_Last](https://forum.freemdict.com/u/First_Last)\
发布日期： [2020 年11 月 23 日 12:42 UTC](https://forum.freemdict.com/t/topic/4146/10 "2020-11-23T12:42:34Z")

</div>

利用 font-size=0 隐藏文本  
这和 display=none 有什么不一样吗？

---

<div class="post-metadata">

作者： ![hua](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/hua/32/11090_2.png) [@hua](https://forum.freemdict.com/u/hua)\
发布日期： [2020 年11 月 23 日 12:48 UTC](https://forum.freemdict.com/t/topic/4146/11 "2020-11-23T12:48:02Z")

</div>

那你就看英文啊，反正文档绝对够用。。不要被海量信息迷眼了。另外要敢于尝试。

---

<div class="post-metadata">

作者： ![Arlin](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/a/82dd89/32.png) [@Arlin](https://forum.freemdict.com/u/Arlin)\
发布日期： [2020 年11 月 23 日 15:29 UTC](https://forum.freemdict.com/t/topic/4146/12 "2020-11-23T15:29:23Z")

</div>

display: none 后，伪元素不能用，但 font-size=0 可以 👍

---

<div class="post-metadata">

作者： ![First\_Last](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/first_last/32/5_2.png) [@First\_Last](https://forum.freemdict.com/u/First_Last)\
发布日期： [2020 年11 月 24 日 02:37 UTC](https://forum.freemdict.com/t/topic/4146/13 "2020-11-24T02:37:36Z")

</div>

原来如此。以前在用下拉式表单有碰到伪元素不能用的问题。不过那时还不知有 font-size=0 这技巧。谢谢。

---

<div class="post-metadata">

作者： ![韦传o朗](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/%E9%9F%A6/87869e/32.png) [@韦传o朗](https://forum.freemdict.com/u/%E9%9F%A6%E4%BC%A0o%E6%9C%97)\
发布日期： [2020 年11 月 24 日 07:20 UTC](https://forum.freemdict.com/t/topic/4146/14 "2020-11-24T07:20:55Z")

</div>

佩服楼主的精神啊。我从来没有真正学过，只是参考了BLK写的一个代码文件开始自己动手，加上以前有些正则和编程基础，勉强算进入第二阶段吧。很好奇楼主第三阶段的epub转制需要学些什么？希望有时间可以和楼主交流下。另外第四阶段的内容太多了。我建议继续拆分成第五，第六阶段。

---

<div class="post-metadata">

作者： ![韦传o朗](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/%E9%9F%A6/87869e/32.png) [@韦传o朗](https://forum.freemdict.com/u/%E9%9F%A6%E4%BC%A0o%E6%9C%97)\
发布日期： [2020 年11 月 24 日 07:26 UTC](https://forum.freemdict.com/t/topic/4146/15 "2020-11-24T07:26:49Z")

</div>

我也推荐看英文文档。相对而言，国内大部分人的英文程度足够了。多一重翻译多一些带入不精准的可能。

---

<div class="post-metadata">

作者： ![Arlin](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/a/82dd89/32.png) [@Arlin](https://forum.freemdict.com/u/Arlin)\
发布日期： [2020 年11 月 24 日 09:56 UTC](https://forum.freemdict.com/t/topic/4146/16 "2020-11-24T09:56:01Z")

</div>

epub 转制的话，用 bat 合并配合正则，或者 python 配合 beautifulsoup，再加上批量替换应该就足够了。

---

<div class="post-metadata">

作者： ![shiruxue](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/s/bbe5ce/32.png) [@shiruxue](https://forum.freemdict.com/u/shiruxue)\
发布日期： [2021 年11 月 5 日 06:47 UTC](https://forum.freemdict.com/t/topic/4146/17 "2021-11-05T06:47:19Z")

</div>

> [@Arlin](#):
>
> ||[中華語文大辭典](https://www.pdawiki.com/forum/thread-42315-1-1.html)|json to html；Excel to json；Excel 之 VBA 替换不可见的换行符

这个能分享吗？

---

<div class="post-metadata">

作者： ![smiling1384](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/s/3e96dc/32.png) [@smiling1384](https://forum.freemdict.com/u/smiling1384)\
发布日期： [2021 年11 月 8 日 07:22 UTC](https://forum.freemdict.com/t/topic/4146/18 "2021-11-08T07:22:49Z")

</div>

好贴，厉害！这个内容足以成为一门专门的技术了。

---

<div class="post-metadata">

作者： ![xianjue114](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/x/a587f6/32.png) [@xianjue114](https://forum.freemdict.com/u/xianjue114)\
发布日期： [2025 年7 月 23 日 07:11 UTC](https://forum.freemdict.com/t/topic/4146/19 "2025-07-23T07:11:32Z")

</div>

回家默默拜读！！！
