【发布时间】:2013-02-08 17:16:35
【问题描述】:
Beautiful Soup 效率不够,所以我尝试使用纯lxml。但是,lxml.html.fromstring 有问题 (it suddenly eats 100% RAM after some time),所以我需要以其他方式进行操作(而不是使用 fromstring)。
我可以使用 API 中的任何其他模块吗?我想不通,而且互联网上的例子几乎为零。
这就是我现在正在做的,但正如我所说,我需要替换fromstring:
mySearchTree = fromstring(data)
metas = {}
n = -1
for a in mySearchTree.cssselect('meta'):
n += 1
metas[n] = {}
for b in a.items():
metas[n][b[0]] = b[1]
y = 0
tag = []
for m in metas:
if 'property' in metas[m] and 'content' in metas[m]:
if 'og:' in metas[m]['property']:
y += 1
tag.append({metas[m]['property'] : metas[m]['content']})
for x in tag:
for y in x:
#print '%s ==> %s' % (y, x[y])
self.rj[y] = x[y]
任何指针都非常感谢!
【问题讨论】:
-
看看
etree.iterparse。如果使用得当,它会很好地工作。我在 20mb 的 RAM 中解析了一个 10GB 的 XML 文件。 -
它也适用于 HTML 吗?
标签: python html parsing facebook-opengraph lxml