|
本帖最后由 kyletruman 于 2018-4-17 07:19 编辑
相比 CALD4 的印刷版,在线版的内容还是有修正及更新的,就我自己对比过的 set 词条中就能看出来。比如做形容词的 set adjective (SAME) 这里,印刷版是 (FIXED)。另外,有些例句前面还加入了 UK 之类的地域标记。
这只是一个预热。旨在学习相关制作技术。离线化并非主要目的,而只能说是副产品。所以请不要抱有太高的期待,因为最终能不能做成好用的 MDX,自己暂时也没底:因为对于 SMART Thesaurus 这一块的跳转处理,还没有想好怎么在 MDX 上实现跟官网一样的效果,就是从 SMART Thesaurus 页面进入单词页面的话,那个 Thesaurus 会自动展开。这个料想跟 JavaScript 有关,而这一块,需要花费时间钻研学习一下,时间可能比较长吧。
希望借着抓网站的机会,练习一下多进程抓取以及学习一下 CSS 排版方面知识,也要把 JavaScript 方面的内容搞起来。
目前另存了一个 set 词条的 html。基本 CSS 框架及 JavaScript 都是官方的,通过参考《CSS 权威指南(第三版)》前 53 页的内容,总算知道了一些选择器的使用,结合这个 set.html,实现了一些效果,当然大部分颜色上的选取及特效都参考了别人的成果:
官方的 CSS 框架在屏幕宽度小于某个值时,会关闭右侧的跳转链接,手机上的效果没测试,大概跟第一个图类似吧可能。另外,这个官方的页面集成了三个内容:
Cambridge Advanced Learner’s Dictionary & Thesaurus
Cambridge Academic Content Dictionary
Cambridge Business English Dictionary
感兴趣的朋友大家可以一起研究,互相学习,兴许可以快速提高相关技术水平,顺便也把词典给做出来。
有想法的朋友请跟帖留言吧。
GoldenDict PC 下正常;
Mdict PC 单词典模式下跳转不正常,联合模式下可以跳转,除此之外一切正常;
Mdict Android 下单词典模式正常,多词典模式正常(经过测试,发现导致联合模式无法使用的原因是 Vocabulary.com Dictionary 词典的干扰,只要不和它一组,词典在移动设备上表现正常)
- /* 针对自己的移动设备,可以在这里修改相关数值 */
- @media (max-width: 330px) and (orientation: portrait), (max-width: 720px) and (orientation: portrait), (max-width: 1080px) and (orientation: portrait) {
- .responsive_row [class*="responsive_cell"]:first-child, .responsive_cell_center {
- margin-left: 0px !important;
- width: 330px !important; /* 改这里,330 px 可以根据自己的情况调大或调小,经过对比,720p 屏幕用 330px 比较理想,1080p 用 360px 比较理想,2k、4k 可以自己测试 */
- }
- }
复制代码
另外,吐槽一下 CALD 官网,HTML 里面的 JS 都跑飞了:
针对这个引发 Mdcit PC (IE 内核)报告语法错误的问题,可以在 pure 函数中添加:
- content = content.replace(''' onclick="onClick="ga('send','event', 'navigation', 'navigation-link' );""''', '')
复制代码
或者生成 MDX SRC 后,使用文本编辑器搜索替换删除如下内容:
- onclick="onClick="ga('send','event', 'navigation', 'navigation-link' );""
复制代码
单词粘连的问题,用 CSS 修正还是不太完美,需要改动这里:
- def remove_blank(content):
- content = content.replace('\n', '')
- content = re.sub(r'\t+', ' ', content)
- content = re.sub(r' +', ' ', content)
- content = re.sub(r'> +<', '> <', content) # 两个以上空白替换为一个空白,之前的代码有误(一个以上空白替换为空),所以造成了粘连
- content = re.sub(r'<!--.+?-->', '', content)
- return content
复制代码
完美主义者,自行压制吧。 |
|