问大家一个有关问题,关于使用html解析库和手动查找的

问大家一个问题,关于使用html解析库和手动查找的
我在解析html库的时候,使用的是libxml2.

当然觉得还可以,只有少数情况下,html标签不满足标准的时候,会导致后面的标签出现问题。

而且有一个问题,在解析gb2312的网页,比如这个网页:http://bbs.hupu.com/2
会有些小小的意外-----版块中的帖子对应的链接,无法得到!
其他网页暂时没发现这个问题。
看了一下这个网页html的结构

主要是这里:

<td id="" class="p_title"><div id="10034108sh"></div>

[<a href="/2-type1">球鞋-男</a>]

 <a id="" href="/10034108.html">帮顶  散卡 40-41贝壳头 姚明球鞋 罗斯</a>

</td><td class="p_author"><a class="u" target="_blank" href="http://my.hupu.com/17231676">璇若夏花</a><br />2014-07-25</td><td class="p_re">8 / 82</td><td class="p_retime"><a href="/10034108.html#o" title="查看最后回复">15:18</a><br />璇若夏花</td>



我怀疑是上面的这个:[<a href="/2-type1">球鞋-男</a>]导致的问题



然后我在想,libxml2解析html既然是按照DOM模型来建立html结构的,那么我能不能使用简单的字符串匹配来对整个html页面的链接进行匹配呢?比如我就找href=“,一直到最近的”结束,压入到vector中?



不知道有没有这么样试过!正则应该也可以!



大家怎么看的?
------解决方案--------------------
我在用的html是逐字节解析的,没用过libxml2..
像这种[<a href="/2-type1">球鞋-男</a>],,我这个库是可以正常解析的,因为[会直接被跳过,直到发现<开始解析,前面的[直接无视
------解决方案--------------------

------解决方案--------------------
正则一个字:慢
------解决方案--------------------
引用:
正则一个字:慢


主要慢在正则表达式的编译部分
有不少没有优化的代码,往往反复编译同一个正则表达式,(我谈论的不是c/c++/java等的编译, 是运行时regex的编译)
这样的代码只需要将正则表达式的定义移到循环之外就快很多

我不知道你有没有注意到这个问题
特别是复杂一点的正则表达式,编译的时间甚至能够超过你用来匹配的时间,
------解决方案--------------------
注解:deque扩充空间是通过申请另外一块内存实现的,运行中同时管理多块内存,而不像vector使用一块内存
所以deque空间不足进行扩充时,不必拷贝已有数据,这意味着巨大的性能提升

当然副作用也有,deque的成员访问,比如[]运算符,比vector慢
但是在末尾(和开头)添加新数据是蛮快的,数据量多的时候(引起容器空间扩充),可以完胜vector