网易我的世界论坛

标题: 一次爬取我的世界wiki的经历 [打印本页]

作者: sevenstars    时间: 2022-2-17 20:47
标题: 一次爬取我的世界wiki的经历
本帖最后由 sevenstars 于 2022-2-17 20:52 编辑

小地图的生物雷达功能需要所有生物的头像,分辨率为16x16。如果在游戏中寻找生物贴图并依次截图的话,不仅非常麻烦,而且最终效果也不好。观察到Wiki中的“基岩版数据值”界面拥有所有生物的头像,这就是我们需要的图片:
[attach]1385307[/attach]
但是对准图片右键却发现并没有另存为的选项,说明这不是一张单独的图片。按下Ctrl+Shift+C检查这个元素对应的html代码,发现这张小图是大图的一部分,因此我们找到了大图的链接和对应的uv位置。
[attach]1385308[/attach]
由于网易的小地图接口AddEntityMarker必须传一张图片,而不是传一张大图并设置其uv,因此下一步我们应该按照生物的id与对应的uv,从大图上截取出需要的小图。
首先检查html代码,发现所有需要的数据都在tbody元素中,右键该元素,选择“编辑为HTML”。
[attach]1385310[/attach]
将原始数据复制到Notepad++中。
[attach]1385309[/attach]
这里,我们使用正则表达式提取出需要的元素,按下Ctrl+M。[attach]1385311[/attach]
<td>[a-z_]+[0-9]*</td>
-[0-9]*px -[0-9]*px
用上方的两个正则表达式完成了对所需内容的标记。
[attach]1385314[/attach]
点击“复制标记文本”,拷贝到一个新文件中。
[attach]1385312[/attach]
然后,使用普通的替换删除<td>,</td>,-,px等多余内容,然后使用python处理字符串,获得生物id与uv位置的对应表:
[attach]1385313[/attach]
然后使用PIL库的crop方法,遍历mobs,传入uv位置,即可生成对应的小图了。
[attach]1385315[/attach]
最后,终于得到了最新的小地图icon,大功告成。[attach]1385316[/attach]
此贴仅用于学习交流,未经允许请勿转载。




作者: 酿造师    时间: 2022-2-17 20:55
awesome
作者: 能够快乐人    时间: 2022-2-18 11:02
大佬,能看看源码学习学习嘛?
作者: sevenstars    时间: 2022-2-20 00:59
能够快乐人 发表于 2022-2-18 11:02
大佬,能看看源码学习学习嘛?

我分享这个的目的是学习交流,源代码截图里面全都有。之所以不公开处理结果,是想让大家自己动手。如果你真的需要一些生物icon的话,这篇教程的详细程度足以让任何一位初学者看懂。
作者: 果喵    时间: 2022-2-21 22:48
顶!




欢迎光临 网易我的世界论坛 (http://mc.netease.com/) Powered by Discuz! X3.3