level= htt.xpath('//span[@class="m_productcard_content_poitext"]/text()')
['5A', '4A', '4A', '4A', '4A', '4A', '4A']
没有景区等级的位置由null或者其他字符替代。
先获取所有父元素,再获取父元素中子元素
判断父元素中是否有子元素即可
参考
from lxml import etree
html = '''
<ul>
<li class="xxx">aaaaaaaaaa <span class="m_productcard_content_poitext">5A</span></li>
<li class="xxx">aaaaaaaaaa </li>
<li class="xxx">aaaaaaaaaa <span class="m_productcard_content_poitext">4A</span></li>
<li class="xxx">aaaaaaaaaa </li>
<li class="xxx">aaaaaaaaaa <span class="m_productcard_content_poitext">4A</span></li>
</ul>
'''
htt=etree.HTML(html)
level = []
li = htt.xpath('//li[@class="xxx"]')
for v in li:
d = v.xpath('./span[@class="m_productcard_content_poitext"]/text()')
if len(d)>0:
level.append(d[0])
else:
level.append("无")
print(level)
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
那就先用if判断一下,上一级标签下边是否存在这个标签。如果存在就获取到该数据保存在列表中,如果不存在就自己设定一个默认值,比如字符串"无"来占列表中的这个位置。
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!