Sam*_*m P 10 python xml parsing lxml urllib2
使用lxml.etreepython框架,直接从链接到在线xml文件解析xml是否更有效,或者更好地说,使用不同的框架(如urllib2),返回一个字符串,然后从中解析?或者它没有任何区别?
方法1 - 直接从链接解析
from lxml import etree as ET
parsed = ET.parse(url_link)
Run Code Online (Sandbox Code Playgroud)
方法2 - 从字符串解析
from lxml import etree as ET
import urllib2
xml_string = urllib2.urlopen(url_link).read()
parsed = ET.parse.fromstring(xml_string)
# note: I do not have access to python
# at the moment, so not sure whether
# the .fromstring() function is correct
Run Code Online (Sandbox Code Playgroud)
或者是否有比这些方法更有效的方法,例如将xml保存到桌面上的.xml文件然后从那些解析?
我用一个简单的计时说唱歌手跑了两个方法.
方法1 - 直接从链接解析XML
from lxml import etree as ET
@timing
def parseXMLFromLink():
parsed = ET.parse(url_link)
print parsed.getroot()
for n in range(0,100):
parseXMLFromLink()
Run Code Online (Sandbox Code Playgroud)
平均值100 = 98.4035毫秒
方法2 - 从Urllib2返回的字符串中解析XML
from lxml import etree as ET
import urllib2
@timing
def parseXMLFromString():
xml_string = urllib2.urlopen(url_link).read()
parsed = ET.fromstring(xml_string)
print parsed
for n in range(0,100):
parseXMLFromString()
Run Code Online (Sandbox Code Playgroud)
平均值100 = 286.9630毫秒
所以有趣的是,似乎使用lxml直接从链接解析是更快速的方法.目前尚不清楚下载是否会更快从硬盘驱动器解析大型xml文档,但可能除非文档很大并且解析任务更加密集,否则parseXMLFromLink()函数仍然会更快,因为urllib2似乎会减慢第二个功能下降.
我跑了几次,结果保持不变.
| 归档时间: |
|
| 查看次数: |
6856 次 |
| 最近记录: |