考虑以下语法:
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()")
这解决了这个问题,但是对于大型项目来说,这可能是内存效率低下的,因为我必须在此处阻止更多内存来存储整个内容,而不是只存储我感兴趣的元素。