# 求助：提取mdx词条转换为HTML/PDF

**URL:** <https://forum.freemdict.com/t/topic/3886>\
**Category:** 技术交流与词典编修\
**Tags:** 提取mdx\
**Created:** [2020 年11 月 1 日 23:01 UTC](https://forum.freemdict.com/t/topic/3886 "2020-11-01T23:01:28Z")\
**Posts on this page:** 12\
**Page:** 3

<div class="post-metadata">

作者： ![jns](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/jns/32/55368_2.png) [@jns](https://forum.freemdict.com/u/jns)\
发布日期： [2020 年11 月 3 日 03:51 UTC](https://forum.freemdict.com/t/topic/3886/41 "2020-11-03T03:51:44Z")

</div>

你把txt编码改回utf-8试试，我改动的mdxconverter.py加了encoding=‘utf-8’，是不是这个原因？

---

<div class="post-metadata">

作者： ![hkreporter](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/h/41988e/32.png) [@hkreporter](https://forum.freemdict.com/u/hkreporter)\
发布日期： [2020 年11 月 3 日 03:56 UTC](https://forum.freemdict.com/t/topic/3886/42 "2020-11-03T03:56:54Z")

</div>

改到utf-8，仍旧出现：  
UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xd2 in position 52: invalid continuation byte

---

<div class="post-metadata">

作者： ![Vim](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/vim/32/8408_2.png) [@Vim](https://forum.freemdict.com/u/Vim)\
发布日期： [2020 年11 月 3 日 03:57 UTC](https://forum.freemdict.com/t/topic/3886/43 "2020-11-03T03:57:30Z")

</div>

还真的是只有中文，可能是soup提取的代码不能适应这个词典…不熟悉bs4…

---

<div class="post-metadata">

作者： ![hkreporter](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/h/41988e/32.png) [@hkreporter](https://forum.freemdict.com/u/hkreporter)\
发布日期： [2020 年11 月 3 日 03:58 UTC](https://forum.freemdict.com/t/topic/3886/44 "2020-11-03T03:58:31Z")

</div>

貌似是部分有英文，其他都是中文。

---

<div class="post-metadata">

作者： ![Vim](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/vim/32/8408_2.png) [@Vim](https://forum.freemdict.com/u/Vim)\
发布日期： [2020 年11 月 3 日 04:02 UTC](https://forum.freemdict.com/t/topic/3886/45 "2020-11-03T04:02:46Z")

</div>

好像是：在HTML标签中的字保留，前后没有标签的则删除；表格也全没。

---

<div class="post-metadata">

作者： ![jns](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/jns/32/55368_2.png) [@jns](https://forum.freemdict.com/u/jns)\
发布日期： [2020 年11 月 3 日 04:30 UTC](https://forum.freemdict.com/t/topic/3886/46 "2020-11-03T04:30:37Z")

</div>

[6.pdf](https://forum.freemdict.com/uploads/short-url/rALAf1jPd5INw0l1aDoos5YJNk1.pdf) (1021.4 KB) [MdxConverter.py](https://forum.freemdict.com/uploads/short-url/3Bwrzha0Iq9AM79Xta1fypn8vt3.py) (9.4 KB)

---

<div class="post-metadata">

作者： ![Vim](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/vim/32/8408_2.png) [@Vim](https://forum.freemdict.com/u/Vim)\
发布日期： [2020 年11 月 3 日 04:58 UTC](https://forum.freemdict.com/t/topic/3886/47 "2020-11-03T04:58:14Z")

</div>

现在英文部分已经有内容了！

 ![image](https://forumcdn.freemdict.com/uploads/default/original/2X/e/e4f74264ca8e3d5ae95971b5a2d334920a6af681.png)

依然有部分词条内容没有提取，如 abandon 的表格部分：

 ![image](https://forumcdn.freemdict.com/uploads/default/original/2X/7/79c765805649146d3acf27a20f25433afc512522.png)

---

<div class="post-metadata">

作者： ![jns](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/jns/32/55368_2.png) [@jns](https://forum.freemdict.com/u/jns)\
发布日期： [2020 年11 月 3 日 05:36 UTC](https://forum.freemdict.com/t/topic/3886/48 "2020-11-03T05:36:37Z")

</div>

这个是gldendict的设置，三维英词.mdx的【abandon】词头指向【词根 B-1】，而词头【词根 B-1】有两个，一个是文字，一个是表，godendict是自动将同名词头合并，只有一个【词根 B-1】词头，因此有文字有表，mdxconverter.py引用的mdict\_query返回第一个【词根 B-1】词头，所以只有文字，没有表。

---

<div class="post-metadata">

作者： ![hkreporter](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/h/41988e/32.png) [@hkreporter](https://forum.freemdict.com/u/hkreporter)\
发布日期： [2020 年11 月 3 日 08:10 UTC](https://forum.freemdict.com/t/topic/3886/49 "2020-11-03T08:10:48Z")

</div>

UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xd2 in position 52: invalid continuation byte  
请教这个报错为什么在转化为html的时候不出现，但在转化为pdf的时候一定出现？

---

<div class="post-metadata">

作者： ![jns](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/jns/32/55368_2.png) [@jns](https://forum.freemdict.com/u/jns)\
发布日期： [2020 年11 月 3 日 08:35 UTC](https://forum.freemdict.com/t/topic/3886/50 "2020-11-03T08:35:46Z")

</div>

不清楚，我测试上面的1.mdx，2.mdx，abc.mdx和三维英词.mdx都能正常输出pdf，给作者提issue吧，我看作者已经注意到了。

---

<div class="post-metadata">

作者： ![darkstar](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/d/b487fb/32.png) [@darkstar](https://forum.freemdict.com/u/darkstar)\
发布日期： [2022 年7 月 12 日 23:49 UTC](https://forum.freemdict.com/t/topic/3886/52 "2022-07-12T23:49:08Z")

</div>

Could you please help me with this error:

```auto
Traceback (most recent call last):
  File "/home/ubuntu/mdict/MdxConverter/convert.py", line 266, in <module>
    {
  File "/home/ubuntu/mdict/MdxConverter/convert.py", line 232, in mdx2pdf
    mdx2html(mdx_name, input_name, TEMP_FILE, invalid_action, False)
  File "/home/ubuntu/mdict/MdxConverter/convert.py", line 197, in mdx2html
    for content in definition.find('body').findChildren(recursive=False):
AttributeError: 'NoneType' object has no attribute 'findChildren'

```

mdx file grabbed from here: [Index of /尚未整理/集合/Oxford Dictionaries/Oxford Advanced American Dictionary for learners of English 2011, 16-2-1/](https://downloads.freemdict.com/%E5%B0%9A%E6%9C%AA%E6%95%B4%E7%90%86/%E9%9B%86%E5%90%88/Oxford%20Dictionaries/Oxford%20Advanced%20American%20Dictionary%20for%20learners%20of%20English%202011%2C%2016-2-1/)

---

<div class="post-metadata">

作者： ![jns](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/jns/32/55368_2.png) [@jns](https://forum.freemdict.com/u/jns)\
发布日期： [2022 年7 月 13 日 12:22 UTC](https://forum.freemdict.com/t/topic/3886/53 "2022-07-13T12:22:54Z")

</div>

用下面的试一下，但是显示的样式还是有问题，还是需要制作者来处理。  
[test.zip](https://forum.freemdict.com/uploads/short-url/hPoYb4cekAmhChzJLDfEy5jAxbU.zip) (134.5 KB)  
windows需要安装wkhtmltopdf，第232行改为wkhtmltopdf.exe的路径。  
[https://wkhtmltopdf.org/downloads.html](https://wkhtmltopdf.org/downloads.html)

[上一页](https://forum.freemdict.com/t/topic/3886.md?page=2)
