如何在将多个条件传递给lxml xpath时避免覆盖输出?

时间:2017-09-20 17:53:32

标签: python parsing xpath lxml

考虑以下语法:

from lxml.html import fromstring; from requests import get
url = some_url
fromstring(get(url).content).xpath("//tr//th//text()" and "//tr/td//text()")

按预期执行。但是我只得到第二个条件"//tr/td//text()"存储的输出,我怀疑是由于第二个条件输出覆盖第一个条件输出而不是存储它们。我试过像:

list1 = []
list1.append(fromstring(get(url).content).xpath("//tr//th//text()" and "//tr/td//text()")

但这是如何工作的没有区别。我的问题是如何避免覆盖第一个输出的第二个输出?

PS:我总是可以解析content并将整个事物保存到内存中,然后依次获取xpath条件。

这样的东西
r = fromstring(get(url).content)
r1 = r.xpath("//tr//th//text()")
r2 = r.xpath("//tr/td//text()")

这解决了这个问题,但是对于大型项目来说,这可能是内存效率低下的,因为我必须在此处阻止更多内存来存储整个内容,而不是只存储我感兴趣的元素。

1 个答案:

答案 0 :(得分:0)

此XPath应该有助xpath("//tr//th//text() | //tr/td//text()")。 此外,此answer适合您