V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
GeekHub
tikazyq
V2EX  ›  分享创造

开发了一个自动识别 HTML 列表的算法,感觉离智能爬虫又近了一步

  •  2
     
  •   tikazyq · 16 天前 · 2484 次点击

    话不多说,下面给几个主流网站列表页的识别效果。

    可以看到,列表基本都识别出来了,一些列表子项( List Item )的字段也标注出来了。这个算法还支持分页的识别。如果进一步优化,甚至可以做到网络爬虫中的自动驾驶,输入一个坐标(网站 URL )就可以自动抓数据,不需要写 XPath 各种抓取配置规则。做到这一步,说明离智能爬虫就不远啦。

    算法不是基于 OCR 的,因此非常快,后续会进一步优化,欢迎大家提意见。

    38 条回复    2020-09-15 15:54:46 +08:00
    sillydaddy
        1
    sillydaddy   16 天前
    这个做好了就再也不怕网站改版改 html 了!!是基于什么实现的呢?
    盲猜一下,应该不是基于深度学习,但也应该不是基于渲染的位置什么的。
    猜不出来。。
    yunser
        2
    yunser   16 天前 via iPhone
    @sillydaddy 列表有个共同特征,就是子元素的结构基本一致,我猜是根据这个判断的。还有 ul li 。
    guyskk0x0
        3
    guyskk0x0   16 天前 via Android
    很赞!开源吗?还是接口服务?
    louettagfh
        4
    louettagfh   16 天前
    开源吗 之前想基于 OCR 搞一个
    tikazyq
        5
    tikazyq   16 天前 via iPhone
    @sillydaddy 是的,解决的就是这个问题,但既不是根据深度学习也不是根据渲染位置,是非常简单的算法
    tikazyq
        6
    tikazyq   16 天前 via iPhone
    @yunser 思路基本正确,不过实现要稍微复杂一些
    tikazyq
        7
    tikazyq   16 天前 via iPhone
    @guyskk0x0 暂时不打算开源,可能会暂时做成 api 供测试
    tikazyq
        8
    tikazyq   16 天前 via iPhone
    @louettagfh 同上
    bojue
        9
    bojue   16 天前 via iPhone
    @tikazyq 不是有自动解析 dom 元素算法,爬虫解析识别图片,文字,链接,然后全网爬
    marcushbs
        10
    marcushbs   16 天前
    想起了逝去的 Kimono
    tikazyq
        11
    tikazyq   16 天前 via iPhone
    @bojue 我记得后羿采集器可以,但也没公开算法,而且貌似收费,目前至少开源做的很准的还是比较少
    tikazyq
        12
    tikazyq   16 天前 via iPhone
    @marcushbs 可惜了,不过 kimono 也不完全自动化,需要一些监督,当时是个不错的产品
    Tianyan
        13
    Tianyan   16 天前
    爬来爬去把搜索引擎搞成了垃圾搜索引擎
    bojue
        14
    bojue   16 天前
    @tikazyq 那倒是,之前看头条招聘爬虫 JD
    heiheidewo
        15
    heiheidewo   16 天前
    如果是我写的那种不规范的 html 看楼主怎么识别
    tikazyq
        16
    tikazyq   16 天前 via iPhone
    @Tianyan 现在主流搜索引擎都有比较健全和复杂的算法来规避垃圾内容了,除非你用的是垃圾搜索引擎
    tikazyq
        17
    tikazyq   16 天前 via iPhone
    @bojue 他们也做智能爬虫?
    tikazyq
        18
    tikazyq   16 天前 via iPhone
    @heiheidewo 爬虫开发者最怕你这样的前端杀手
    mscb
        19
    mscb   16 天前 via Android
    啥原理?用上类似于 yolo 这类深度学习的技术吗?
    tikazyq
        20
    tikazyq   16 天前 via iPhone
    @mscb 不是深度学习哦,算法其实还比较简单
    lemonda
        21
    lemonda   16 天前
    有个需求不知道能不能实现,用来迁移网站用的,比如一个网站有很多个产品页面,每个页面都是单独做的,大同小异,无法从代码抓,因为没有特别的标签,OCR 也不行因为有的是 tab,要点开了才能看。
    想法是先在几个测试页面上截图一样点和框出要采集的内容,剩余的它学会了自己采。
    herozzm
        22
    herozzm   16 天前 via Android
    ajax 加载的,json 格式的 xml 也能?规则虽老但好用,智能虽好但没法投入生产
    tikazyq
        23
    tikazyq   16 天前 via iPhone
    @lemonda 你这种是复杂需求,需要更复杂的算法才可以
    tikazyq
        24
    tikazyq   16 天前 via iPhone
    @herozzm html 就是 xml,json 也是结构化的,本质都是一样的
    imn1
        25
    imn1   16 天前
    不需要深度,有足够 html parse 能力就行,深度做这个也太废机器了
    我暂时想到的是,这些规则的表格,css 也是规范且类似的,联系父节点、子节点一起分析就够了
    之前想写个类似的(目的是辅助浏览,整行整列隐藏个人不关注的内容),只是我多年没做前端,缺乏这个能力和动力
    Mitt
        26
    Mitt   16 天前
    以为会有链接。。。
    haoxuexiaoyao
        27
    haoxuexiaoyao   16 天前
    什么都没有 看了个图
    binux
        28
    binux   15 天前 via Android
    单页重复结果识别也太简单了。
    五年前我都做到多页的模板识别了。

    然而并没有什么卵用。
    要准确比如手写,要泛化不如直接训练一个 model 。
    tikazyq
        29
    tikazyq   15 天前
    @binux 大佬厉害,有不有相关的链接可以参考下?
    tikazyq
        30
    tikazyq   15 天前
    @Mitt
    @haoxuexiaoyao 现在算法还在优化,等成熟了会放出来
    tikazyq
        31
    tikazyq   15 天前
    @binux 其实真正的列表识别还是有一些 trick 的,需要将 html 各种信息进行分析统计判断,要做到高准确率还是有些难度的
    RyougiShiki
        32
    RyougiShiki   15 天前
    用过一款软件 sitesucker,爬取效果相当好,好奇源码。
    ziyunhx
        33
    ziyunhx   15 天前
    https://github.com/ziyunhx/thrinax
    我 2017 年开源的列表页和文章页自动识别代码,有兴趣的可以看看。
    tikazyq
        34
    tikazyq   15 天前
    @ziyunhx 大佬厉害,回头研究下
    bianz103
        35
    bianz103   14 天前 via iPhone
    怎么知道 ul li 这些渲染后位置呢
    tikazyq
        36
    tikazyq   14 天前
    @bianz103 这个也是一个小算法,生成 selector 的
    milu2003516968
        37
    milu2003516968   9 天前
    牛逼是牛逼,但我认为爬虫的痛点并不在于自动识别。
    tikazyq
        38
    tikazyq   9 天前
    @milu2003516968 对于不会写爬虫代码的人来说足够了
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2042 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 15:26 · PVG 23:26 · LAX 08:26 · JFK 11:26
    ♥ Do have faith in what you're doing.