xpath提取div标签所有嵌套文本的实用方法
如何提取div标签下的所有文本呢?
<html> <body> <h1>Hello,World</h1> <div>轻点击<a>这条</a>链接</div> </body> </html>
按照我们之前的作风,肯定是提取每个标签的文本,例如下面这样
fromlxmlimportetree html=""" <html> <body> <h1>Hello,World</h1> <div>轻点击<a>这条</a>链接</div> </body> </html> """ _element=etree.HTML(html) div=_element.xpath('//div/text()') print(f"div标签文本获取结果:{div}") a=_element.xpath('//div/a/text()') print(f"a标签文本获取结果:{a}") text=div[0]+a[0]+div[1] print(f"最后结果:{text}")
输出结果:

etree有个toString方法,可以将element对象转换未字符串文本,这样我们就可以提取了,话不多说,直接实战
#!/usr/bin/python #-*-coding:utf-8-*- #@Time:2022/8/2819:01 #@Author:亮哥 #@微信公众号:亮哥数据实验室 #@File:aaaaa.py #Software:PyCharm fromlxmlimportetree html=""" <html> <body> <h1>Hello,World</h1> <div>轻点击 <a>这条</a> 链接 </div> </body> </html> """ _element=etree.HTML(html) text=_element.xpath('*//div') ent_text=etree.tostring(text[0],method='text',encoding='utf-8').decode() ent_text=ent_text.replace("n","").replace("","") print(f"最后结果:{ent_text}")

#!/usr/bin/python #-*-coding:utf-8-*- #@Time:2022/8/2819:01 #@Author:亮哥 #@微信公众号:亮哥数据实验室 #@File:aaaaa.py #Software:PyCharm fromlxmlimportetree html=""" <html> <body> <h1>Hello,World</h1> <div>轻点击 <a>这条</a> 链接 <span> <a>点击播放</a> 歌名:我是真的爱上你 </span> "" <span> <span> 你有一双深情的眼睛 </span> <span> 你有融化冰雪的魔力 </span> </span> </div> </body> </html> """ _element=etree.HTML(html) text=_element.xpath('*//div') ent_text=etree.tostring(text[0],method='text',encoding='utf-8').decode() ent_text=ent_text.replace("","") ent_text=[iforiinent_text.split("n")ifi] print(f"最后结果:{ent_text}")

总结:此方法是非常的实用,可以应对各大网站表格标签,table,tr,td下的所有标签不一致问题,以及其他情况,较为通用。