V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LeungJZ
V2EX  ›  前端开发

爬虫爬到这种 [数字] ,该如何解决?

  •  
  •   LeungJZ ·
    JZLeung · 2018-04-14 16:33:16 +08:00 · 3025 次点击
    这是一个创建于 2194 天前的主题,其中的信息可能已经有所发展或是发生改变。

    正在学习爬虫,然后发现页面上看上去比较正常的数字,原来暗藏玄机。

    这特么的不是正经数字!!!!!!!

    image.png

    右键选择后,就发现了奇怪的现象,浏览器菜单根本识别不出来这是什么东西。

    然后查看源代码发现,好像是一种自定义的字体。

    <span class="dzfoYFxr">
    	&#100333;&#100330;&#100330;&#100338;&#100331;&#100330;
    </span>
    <cite>万字</cite>
    

    而且,每次刷新都是不一样的。

    刷新后是这样的:

    <span class="xVHrzwwr">
    	&#100518;&#100516;&#100516;&#100512;&#100519;&#100516;
    </span>
    <cite>万字</cite>
    

    查看元素可以发现真的是字体。 image.png

    那么,请问,这种情况该如何解决?

    18 条回复    2018-04-15 11:18:55 +08:00
    ccino
        1
    ccino  
       2018-04-14 16:44:34 +08:00
    等高手吧,我没想出来办法。。。。。。。。
    whileFalse
        2
    whileFalse  
       2018-04-14 16:53:42 +08:00
    ocr 啊。
    Hzzone
        3
    Hzzone  
       2018-04-14 16:57:30 +08:00 via iPhone
    截图 ocr
    takato
        4
    takato  
       2018-04-14 16:59:07 +08:00
    1.OCR
    2.可以考虑实现一个模型 train 一下看看 class 的值和&#后的数字有没有线性或非线性关系。
    xzc0001
        5
    xzc0001  
       2018-04-14 16:59:35 +08:00
    直接映射?是不是每个数字只用了一个或者几个对应字体里的字符?可以单独写个函数去转这个数字。
    LeungJZ
        6
    LeungJZ  
    OP
       2018-04-14 17:06:49 +08:00
    @xzc0001
    映射估计不行,因为每次刷新后就会变的。


    @whileFalse
    @Hzzone
    @takato
    爬虫还要加上 ocr 岂不是分分钟超时?还费钱。
    m939594960
        7
    m939594960  
       2018-04-14 17:14:03 +08:00
    解析字体文件啊?
    xujialiang
        8
    xujialiang  
       2018-04-14 17:25:53 +08:00 via iPhone
    找 js 里的方法,看它们怎么解析的,抄过来
    sujin190
        9
    sujin190  
       2018-04-14 17:32:19 +08:00
    自定义字体,这个加密牛逼啊,有想法,但是每次生成字体文件应该挺耗资源的吧,那么就不可能有太多份才是,写个脚本刷新试试,看看会不会遇到重复的
    crab
        10
    crab  
       2018-04-14 17:39:05 +08:00
    EPr2hh6LADQWqRVH
        11
    EPr2hh6LADQWqRVH  
       2018-04-14 17:42:15 +08:00
    这个思路 nice 啊,学习一个
    LeungJZ
        12
    LeungJZ  
    OP
       2018-04-14 17:54:36 +08:00
    @xujialiang
    没有 js 操作,完全的 ssr。在 console 里面打开 diabled javascirpt 一样能渲染出来的。
    LeungJZ
        13
    LeungJZ  
    OP
       2018-04-14 17:55:34 +08:00
    @sujin190
    应该不是每次都生成,但是可能有大量已经生成好的字体文件,已经分散在 cdn 上了。每次输出只要随便取一个就可以了。
    LeungJZ
        14
    LeungJZ  
    OP
       2018-04-14 17:58:54 +08:00
    @crab
    确实,猫眼的也是这样的,但是,很容易就破了,因为他每次引入的字体文件都是一样的,字体都是 stonefont。而这里却每刷新一次就有新的文件。
    boboliu
        15
    boboliu  
       2018-04-14 18:15:58 +08:00 via Android
    可以同时直接解析 TTF 然后比对字形识别
    l0ng
        16
    l0ng  
       2018-04-14 23:59:34 +08:00
    我发现网易云音乐网页版的歌名加入了特殊字符

    <b title="不为谁而作的歌">不为<div class="soil">蝜蟊挏</div>谁而作的歌</b>
    Trim21
        17
    Trim21  
       2018-04-15 05:19:41 +08:00 via Android
    @l0ng …网易这样有意思吗,直接抓 tag 的属性不就行了
    projectzoo
        18
    projectzoo  
       2018-04-15 11:18:55 +08:00
    我的第一想法就是设置得是字体,毕竟 浏览器 可以无痛解析。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5519 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 08:42 · PVG 16:42 · LAX 01:42 · JFK 04:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.