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