关于正则解析HTML的吐槽点

2012-10-22 13:55:46 +08:00
 crazybubble
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,是不是这些都相对/嵌套被嵌套的可能性小一些?
从而可以用正则去抓取?
4035 次点击
所在节点    分享发现
5 条回复
dreampuf
2012-10-22 14:24:10 +08:00
可以不代表适合。

HTML规范不一,很难拿到适配的regex。
regex适合字符作为单元的匹配模式,而非一个HTML TAG。
crazybubble
2012-10-22 14:30:32 +08:00
@dreampuf 嗯啊 我想的是如果把一个html作为一整个字符串来看,其实也是以字符为单元的不是嘛?如果我要找一个img的src,那就类似找一个pattern之前有<img src=“ 这个pattern之后有”, 找这种tag的attribute的话,一般不会有嵌套这种问题存在吧?那是不是用正则来提取信息比较可行?还是说这种也不可行,正则根本就不应该去和html有任何交集?
hu437
2012-10-22 14:37:35 +08:00
可以试试使用JSOUP进行解析,非常方便
dreampuf
2012-10-22 14:39:30 +08:00
@crazybubble regex匹配HTML是可以的,但如你所说,匹配的还是img这个HTML tag,只是拿regex干HTML parser的事儿。但这毕竟只是特例,如果要做一般化的采集,更推荐的是HTML parse得到DOM后进行DOM的node访问(XPATH)。
crazybubble
2012-10-22 14:42:36 +08:00
@dreampuf 非常谢谢,我想这回答了我的问题。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/50588

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX