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

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

1 个赞

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

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

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

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

6.pdf (1021.4 KB) MdxConverter.py (9.4 KB)

1 个赞

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

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

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

1 个赞

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

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

Could you please help me with this error:

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/

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