可+【QQ群】拿源码
进入经营总览想把数据存下来发现返回的json数据部分空白如下
这可怎么办
稳住应该是字体的问题,可能是多多自己实现了某种字体,我们去找他的js
发现如我们所想,进行跟踪,发现的确是在css端进行了字体替换,
直接找字体,找到了,根据请求去找,那里请求的
来源在这个请求里
https://api.yangkeduo.com/api/phantom/web/en/ft
看看返回,跑不掉了,接下来就是下载下来进行查看,字体如何修改的,
我们可以进这个网站 FontDrop!
看到 8的映射 是 unicode
这就是为什么在 json里显示是空白占行的,因为这种unicode是不被显示的
我们只需要做好映射关系 比如 字体8映射 EFC5 就行了,那如何知道 字体8是现实正常字体8。
我们可以通过图像识别,比如ocr识别,如果字体映射关系不变的话这种也还行,但是效率可能比较慢。如果改变的或效率就会更慢。看下图,我们又拉了一次字体,发现字体是改变的,位置,映射都在变,说明,通过 ocr文字识别虽然可行,但是效率上太慢
不得不找到新的方式,经过思索,和找规律,发现可以这么查看,灵机一动,比对多个8,轨迹是不是都是一样的,不下了10几次字体确定是的,我们只需要拿到字体的轨迹就行了,轨迹对应标准数字,我们通过。python开源库,加载字体,获取每个字体的轨迹存下来,平铺成字符串,
就实现了 自动转换,然后在和json中的unicode做映射就完美了,同时写个自动替换脚本自动转json,看成品
防止多多老六找我,只放上部分源码
#字体转义代码
def getUnames(unames):ss = ''for x in unames.split('\\u'):if x:ucode = x.upper()if '.' in ucode:ucode=ucode.replace('.','')ss += ttFont(ucode, ttf_file_path)ss += "."elif ',' in ucode:ucode=ucode.replace(',','')ss += ttFont(ucode, ttf_file_path)ss += ","elif '%' in ucode:ucode=ucode.replace('%','')ss += ttFont(ucode, ttf_file_path)ss += "%"else:# print(ucode)ss += ttFont(ucode, ttf_file_path)return ss
可+【QQ群】拿源码