抓取UE API并生成带索引的Dash文档

不知为何,UE API现在已经不随引擎发布chm的离线文档了,官方发布的最新版本还是2014年的,UE发展到现在有了很多变化,显然四年前的API文档已经丧失部分参考价值了。但是UE文档站自身的搜索功能就我的体验而言,十分的烂。
所以折腾了一下把UE API的所有页面爬了下来,并且生成了Dash支持的文档,检索起来十分酸爽。(文后附下载链接)

2022.06.07更新:把API文档更新至UE 5.0.2,可在文末下载。。

先来看一下成果图(我在Windows下使用的是Zeal,它使用的是Dash的文档源):

最开始的打算是把UE API的文档爬下来之后生成chm,但是在我爬下来之后发现太大了,现在(2018.07.05),UE的API文档html页面总大小为2.89G,做成一个chm不太现实,所以就想到了其他办法——做成Dash支持的文档。
本着不重复���轮子的精神我查了一下有没有相关的实现,查到了一位仁兄几年前做的一个东西:Unreal Engine API documentation in Dash.
该项目地址为:DrummerB/UnrealEngineDocset(作者已经四年没有更新了)
他实现的是把官方提供的chm解包出来,然后通过bs4爬虫框架来生成Dash的文档、并建立索引。我已经直接抓取了所有的Html文件,所以略过这一步。

可以使用wget来下载站点,吐个槽:windows下的WebZIP并不好用。
具体的用法可以从我之前的记录(imzlp.com/notes)里查看。

但是经过生成后发现,当时作者解析的方法和现在UE的API页面已经不一样了,所以我在它的基础上改进了一下,增加了以下几个支持:

  • 对所有成员的索引增加namespace(我手动关闭了Class/Struct/union的,因为增加了namespace后会对索引排序不友好,可以手动开启)
  • 对没有独立页面的变量/函数/枚举等建立类页面的索引(之前作者的是不对没有独立页面的建立索引,会导致有些成员检索不到,我觉得不太好)
  • 增加对Overridden的函数索引支持
  • 增加Constructor/Operator/Emum/Typedef的索引支持
  • 对具有Inheritance Hierarchy的结构,从Inheritance Hierarchy的tag中获取Name,从而避免具有很多同名索引的情况
  • 尽可能多地对不同类的相同名字的成员增加Namespace的标识
  • 一些bug修复和优化

生成大约需要十分钟左右(视��器性能而定,当然Py的效率也是很一般的),用法(要求python2和bs4):

首先要安装bs4:

1
$ pip install bs4

然后执行脚本生成:

1
$ python ue4docset.py -n "UE4" ~/Desktop/API ~/Desktop/UE4.docset
0%