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

关于正则解析HTML的吐槽点

  •  
  •   crazybubble · 2012-10-22 13:55:46 +08:00 · 4039 次点击
    这是一个创建于 4420 天前的主题,其中的信息可能已经有所发展或是发生改变。
    http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454
    这篇小有名气的SO回答貌似很受欢迎,但是我抓不到槽点阿阿。。。求解释

    另外,如果不推荐使用正则解析HTML的理由是因为正则不能准确判断HTML层级的嵌套的话,那么用正则去抓取那些不太可能嵌套的信息是不是可取的?

    比如img tag的src阿,这个会不会有可能嵌套/被嵌套呢?
    还有比如anchor tag里的href,是不是这些都相对/嵌套被嵌套的可能性小一些?
    从而可以用正则去抓取?
    5 条回复    1970-01-01 08:00:00 +08:00
    dreampuf
        1
    dreampuf  
       2012-10-22 14:24:10 +08:00   ❤️ 1
    可以不代表适合。

    HTML规范不一,很难拿到适配的regex。
    regex适合字符作为单元的匹配模式,而非一个HTML TAG。
    crazybubble
        2
    crazybubble  
    OP
       2012-10-22 14:30:32 +08:00
    @dreampuf 嗯啊 我想的是如果把一个html作为一整个字符串来看,其实也是以字符为单元的不是嘛?如果我要找一个img的src,那就类似找一个pattern之前有<img src=“ 这个pattern之后有”, 找这种tag的attribute的话,一般不会有嵌套这种问题存在吧?那是不是用正则来提取信息比较可行?还是说这种也不可行,正则根本就不应该去和html有任何交集?
    hu437
        3
    hu437  
       2012-10-22 14:37:35 +08:00   ❤️ 1
    可以试试使用JSOUP进行解析,非常方便
    dreampuf
        4
    dreampuf  
       2012-10-22 14:39:30 +08:00   ❤️ 1
    @crazybubble regex匹配HTML是可以的,但如你所说,匹配的还是img这个HTML tag,只是拿regex干HTML parser的事儿。但这毕竟只是特例,如果要做一般化的采集,更推荐的是HTML parse得到DOM后进行DOM的node访问(XPATH)。
    crazybubble
        5
    crazybubble  
    OP
       2012-10-22 14:42:36 +08:00
    @dreampuf 非常谢谢,我想这回答了我的问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1638 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:58 · PVG 00:58 · LAX 08:58 · JFK 11:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.