抓取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

资源下载(Windows下推荐Zeal来使用Dash文档):

UE4.docset.7zapi.unrealengine.com.tar.gz均解压,并将api.unrealengine.com/下的images/Include/INT三个目录放入UE4.docset/Contents/Resources/Documents下即可。
如果使用的是Zeal,则将UE4.docset放入Zeal安装目录下的docsets下即可。

Update

我创建了一个git仓库,来存放生成的文档版本:UE4_API_FOR_DASH,可以在仓库的Release中下载。

20220607更新

20211122更新

20200827更新

20190628更新

全文完,若有不足之处请评论指正。

微信扫描二维码,关注我的公众号。

本文标题:抓取UE API并生成带索引的Dash文档
文章作者:查利鹏
发布时间:2018年07月05日 23时43分
更新时间:2021年11月22日 10时55分
本文字数:本文一共有1.5k字
原始链接:https://imzlp.com/posts/11515/
许可协议: CC BY-NC-SA 4.0
文章禁止全文转载,摘要转发请保留原文链接及作者信息,谢谢!
您的捐赠将鼓励我继续创作!