xpath与正则表达式抽取网页信息的速度比较

以前我都是用正则表达式处理网页,对于那种非常不是经常改代码的网站,正则提取是非常好的


但对于经常改代码的网站,写一个好的正则表达式确实有点费事,用xpath就比较好,但写了脚本之后发现比以前慢一些,于是写了一个小程序测试一下速度


随便将一个百度搜索结果页另存为S:\baidu.htm,取title标签中的字符串


#coding=utf-8
import time
import re
import time
import lxml.html
f=open(r'S:\baidu.htm','r')
resp=f.read()
f.close()
t1=time.clock()
for x in xrange(1000):
    title=re.search(r'<title>(.*?)</title>',resp).group(1)
print time.clock()-t1
content=resp.decode('utf-8')
dom=lxml.html.document_fromstring(content)
t2=time.clock()
for x in xrange(1000):
    for item in dom.xpath('//title'):
        title=item.text_content()
print time.clock()-t2
from lxml import etree
doc = etree.HTML(content)
t3=time.clock()
for x in xrange(1000):
    for path in doc.xpath('//title'):
         title=path.text
print time.clock()-t3
from pyquery import PyQuery
page = PyQuery(content,parser='html')
t4=time.clock()
for x in xrange(1000):
    title=page('title').text()
print time.clock()-t4

结果如下

0.00576198176985

0.0840350097817

0.0778033702951

0.133525497136


确实正则很快,是其他方案的10倍以上,如果编译一下速度可能更快,pyquery最慢,中间是用lxml提取的,如果有不对的地方,希望大家指正.

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...