问题的根源是,xpath中的text()是要检索的元素的测试的一部分,因为对于某些p元素来说它不是元素,所以它不会被检索。在
解决方案是修改xpath以选择所有p元素,然后从中获取text。在import lxml.html as LH
xmlstr = """
T1
T2
T3
A1
A3
"""
html_root = LH.fromstring(xmlstr)
eol_table = None
for tbl in html_root.xpath('//table'):
p_elements = tbl.xpath('.//tr/td/p')
eol_table = [p_elm.text for p_elm in p_elements]
print eol_table
打印:
^{pr2}$
另一种情况,其中某些元素没有
(这个更新的请求是由Nijo提出的,他还接到了text_content()电话)xmlstr = """
T1
T2
T3
A1
"""
html_root = LH.fromstring(xmlstr)
eol_table = None
for tbl in html_root.xpath('//table'):
td_elements = tbl.xpath('.//tr/td')
eol_table = [td_elm.text_content() for td_elm in td_elements]
print eol_table
什么指纹['T1', 'T2', 'T3', 'A1', '', '']
如您所见,text_content()从不返回None,但在None的情况下返回空字符串''