Xpath中的空文本

时间:2016-12-04 14:01:24

标签: python xpath web-scraping

我已经编写了这行代码来通过XPath创建列表

classes=tree.xpath('//a[@class="pathm"]/../../../../../td[3]/font/text()')

它创建一个列表。它们也是包含空文本的项目。列表不包含它们。它只包含非空值。我想在列表中取空字符串,只要它们没有文本。请帮忙

1 个答案:

答案 0 :(得分:2)

如果有空文本(或者更确切地说是//font),您只能获得None并稍后使用循环获取文字或自己的文字

import lxml.html

data = '''
<font>A</font>
<font></font>
<font>C</font>
'''

tree = lxml.html.fromstring(data)

fonts = tree.xpath('//font')

result = [x.text if x.text else '' for x in fonts]

print(result)

如果你不知道列表理解是如何工作的 - 它就是这样做的

result = []

for x in fonts:
    if x.text: # not None
        result.append(x.text)
    else:
        result.append('')

print(result)