|  |      1est      2014-07-23 18:05:23 +08:00 via Android 看需求。糙快猛不怕死啥都敢用 | 
|  |      2lei286394973      2014-07-23 18:06:49 +08:00 如果是python解析的话  推荐使用 pyquery!   可以使用jquery的语法获取界面元素的。。简直神器! | 
|  |      3imn1      2014-07-23 18:09:25 +08:00 我看数量,量多一定不用DOM,只用正则,DOM消耗内存和时间都多 量少哪个方便用哪个 其实正则基本能搞定的,只是有时候没有id很难定位,要写得很复杂,还要测试,不如xpath写得简单,所以就用xpath | 
|  |      4akfish      2014-07-23 18:13:53 +08:00 lz标题有误导,原题目根本就没提“解析(parse)”二字。 所以被接受答案其实也是审题不明确,nb哄哄的说了一大堆正确的废话。 题主又不是要写一个通用的HTML parser,不过是要完成一项特定任务而已。 | 
|  |      5qq529633582      2014-07-23 18:16:19 +08:00 同上,用正则不是要解析HTML,只是在知道HTML大致结构的时候从网页中提取指定内容 | 
|  |      6akfish      2014-07-23 18:22:13 +08:00 如果真的说解析(parse),懂编译原理,写过编译器的人都知道是怎么回事的。 正则式只会出现在tokenize一步,并且由lexer generator生成FSM,并不会调用通用的正则式解析库。 | 
|  |      7iyaozhen      2014-07-23 18:55:57 +08:00 不知道需求是什么,抓取网页分析出可用数据的话我一般用正则+dom解析器。 先用正则匹配出目标信息所在的DIV或Table,然后在用dom解析器。这样dom解析器也不用消耗很多的内存和时间。 当然,直接用正则更快,但更麻烦,容易出错。特别是匹配表格信息,用dom解析器即快速又准确。 | 
|  |      8dorentus      2014-07-23 18:59:55 +08:00 @akfish 我倒是觉得答案没啥问题。 题主问的是怎么用 regex 匹配一些 HTML,但是由于 HTML 不是正则语言,所以*单用*正则表达式是无法匹配的。Tokenization 用到正则则是另外一回事了。 | 
|  |      9lincanbin      2014-07-23 19:23:18 +08:00 匹配数据用正则 解析html用解析DOM树的方法 | 
|  |      10binux      2014-07-23 19:48:37 +08:00  1 解析速度总是快于抓取速度 | 
|  |      11viowan      2014-07-23 20:07:08 +08:00 我觉得还是需要看需求吧,如果有一定的容错范围,并且解析的网页代码基本固定的用正则感觉没啥问题。如果对相应数据精确度要求高,解析的网页代码不固定,并且有些可能要通过执行js或者什么之类的才能获得,那还是不建议用JS。总之还是看需求。 | 
|  |      13tabris17      2014-07-23 22:57:41 +08:00 要看实际问题,只是做个爬虫抓取文本,正则就够了 | 
|  |      14zhanglp888      2014-07-24 12:45:10 +08:00 我做过一段时间的抓取html的工作,我是这样做的: 1.读取全部html后,用tidy这个工具,整理html(可转成utf-8)。 2.根据想要的东西读取内容,用的是xpath,用正则很难 xpath方面,用过phpquery这个工具 java方面: 看这个 -》 http://www.ibm.com/developerworks/cn/xml/x-javaxpathapi.html php方面:看这个 -》 http://www.ibm.com/developerworks/cn/xml/x-datamineparsephp/ 中间的问题有很多,很难完美解决 | 
|  |      15dingyaguang117      2014-07-24 13:26:57 +08:00 程序员要节省时间,简单粗暴第一准则 |