xpath提取div标签所有嵌套文本的实用方法

2022-10-1821:23:52云计算与物联网Comments1,175 views字数 1607阅读模式

如何提取div标签下的所有文本呢?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28422.html

<html> <body> <h1>Hello,World</h1> <div>轻点击<a>这条</a>链接</div> </body> </html>文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28422.html

按照我们之前的作风,肯定是提取每个标签的文本,例如下面这样文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28422.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}")文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28422.html

输出结果:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28422.html

xpath提取div标签所有嵌套文本的实用方法由此我们可得知,直接利用xpath解析div标签文本,下一节点的内容文本是无法全部获取的,如果按照上面的这种写法,只能解决这类固定标签,如果里面有多个标签或者有多个子标签,子子标签,那肯定是行不通的,那怎么办呢?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28422.html

etree有个toString方法,可以将element对象转换未字符串文本,这样我们就可以提取了,话不多说,直接实战文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28422.html

#!/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}")文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28422.html

xpath提取div标签所有嵌套文本的实用方法再随便构造几个子标签文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28422.html

#!/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}")文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28422.html

xpath提取div标签所有嵌套文本的实用方法最终就可以得到我们想要的结果文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28422.html

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

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28422.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/yunda/28422.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定